我正在使用 NSDateComponents()
创建一个日期。
let startDate = NSDateComponents()
startDate.year = 2015
startDate.month = 9
startDate.day = 1
let calendar = NSCalendar.currentCalendar()
let startDateNSDate = calendar.dateFromComponents(startDate)!
... 现在我想打印从 startDate
到今天的所有日期,NSDate()
。我已经尝试过使用 NSCalendarUnit
,但它只输出整个差异,而不是两者之间的单个日期。
let unit: NSCalendarUnit = [.Year, .Month, .Day, .Hour, .Minute, .Second]
let diff = NSCalendar.currentCalendar().components(unit, fromDate: startDateNSDate, toDate: NSDate(), options: [])
如何打印两个 Date
对象之间的所有日期?
编辑 2019
与此同时,类的命名发生了变化——NSDate
现在只是Date
。 NSDateComponents
现在称为 DateComponents
。 NSCalendar.currentCalendar()
现在只是 Calendar.current
。
最佳答案
只要在日期上加上一天的单位,直到它到达 当前日期(Swift 2 代码):
var date = startDateNSDate // first date
let endDate = NSDate() // last date
// Formatter for printing the date, adjust it according to your needs:
let fmt = NSDateFormatter()
fmt.dateFormat = "dd/MM/yyyy"
// While date <= endDate ...
while date.compare(endDate) != .OrderedDescending {
print(fmt.stringFromDate(date))
// Advance by one day:
date = calendar.dateByAddingUnit(.Day, value: 1, toDate: date, options: [])!
}
Swift 3 的更新:
var date = startDate // first date
let endDate = Date() // last date
// Formatter for printing the date, adjust it according to your needs:
let fmt = DateFormatter()
fmt.dateFormat = "dd/MM/yyyy"
while date <= endDate {
print(fmt.string(from: date))
date = Calendar.current.date(byAdding: .day, value: 1, to: date)!
}
关于swift - 两个 Date 对象之间的所有日期 (Swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32536612/