如何从当前date迅速获得下一个10天
我有dateformatstring这样的“2015-03-09”。我如何得到下一个10天date从当前date?任何帮助将不胜感激。提前感谢
以下是如何使用内置的date修改方法从现在开始10天的date.dateByAddingUnit如果需要所有10天(date),可以通过“value:10”部分循环并添加到数组。
var tenDaysfromNow: NSDate { return NSCalendar.currentCalendar().dateByAddingUnit(.Day, value: 10, toDate: NSDate(), options: [])! } print(tenDaysfromNow)
而对于Swift3:
var tenDaysfromNow: Date { return (Calendar.current as NSCalendar).date(byAdding: .day, value: 10, to: Date(), options: [])! }
对于纯粹的Swift 3解决scheme:
Calendar.current.date(byAdding: .day, value: 10, to: Date())
你可以使用dateByAddingTimeInterval()方法。
var dateStr = "2015-03-09" var formatter = NSDateFormatter() formatter.dateFormat = "YYYY-MM-dd" var currDate = formatter.dateFromString(dateStr) for i in 1...10 { var interval = NSTimeInterval(60 * 60 * 24 * i) var newDate = currDate?.dateByAddingTimeInterval(interval) println(newDate) }
编辑:
正如@Martin R在评论中提到的那样,使用NSCalendar类的dateByAddingComponents()会更好:
var calendar = NSCalendar(calendarIdentifier: NSGregorianCalendar) var dateComponent = NSDateComponents() for i in 1...10 { dateComponent.day = i var newDate = calendar?.dateByAddingComponents(dateComponent, toDate: currDate!, options:nil) println(newDate) }
有一个函数'dateByAddingTimeInterval()'NSDate对象。 有了这个,你可以从你的datestring创build一个NSDate。 然后添加10天= 10 * 24 * 60 * 60以获得接下来10天的NSDate值
let today : NSDate = .... let next10days = today.dateByAddingTimeInterval(10*60*60*24); //interval = seconds //then you convert back to your date string format if you want, by using NSDateFormatter
为了避免夏令时(@MartinR)的问题:
let cal = NSCalendar(calendarIdentifier: NSGregorianCalendar) let next10Days = cal.dateByAddingUnit(NSCalendarUnit.DayCalendarUnit, value: 10, toDate: today, options: nil)
对于Swift 3:
let now = NSDate() let plusTen = now.dateByAddingDays(10)