我需要获得两个日期之间的天数,但如果我输入例如:2016-12-10和2017-01-10将会有负天数。这是在这两个日期之间的新年时发生的。
totalUnitCount
如何修改daysBetween(date:NSDate)函数以防止这种情况发生?
修改 请不要注意为什么它打印得非常好-334。这只是因为fromDate和toDate是一个月不同的日子。想要解决的问题是为什么回答是否定的,而不是应该如此。
解决: 结果证明是你们许多人想的。 fromDate大于toDate并导致负数。愚蠢的错误。大家好!
答案 0 :(得分:1)
你不必担心日子会消极。最好知道第一个日期(例如从输入UIDatePicker
中选择的)是否大于另一个。当您转换回NSDate
时,会自动处理。
如果问题是如何打印日期,您可以使用abs(days)
。
答案 1 :(得分:0)
首先比较两个日期,然后你就可以得到正确的正值
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let startDate:NSDate = dateFormatter.dateFromString("2016-12-10")!
let endDate:NSDate = dateFormatter.dateFromString("2017-01-10")!
let cal = NSCalendar.currentCalendar()
let dayUnit: NSCalendarUnit = .Day
if startDate.compare(endDate) == NSComparisonResult.OrderedDescending{
let components = cal.components(dayUnit, fromDate: endDate, toDate: startDate, options: [])
print(components)
} else {
let components = cal.components(unit, fromDate: startDate, toDate: endDate, options: [])
print(components)
}
由 Leo Dabus
描述你可以在不比较日期的情况下做到这一点:
let com = cal.components(dayUnit, fromDate: startDate.earlierDate(endDate), toDate: startDate.laterDate(endDate), options: [])
print(com)