跨过新年,获得两个NSDates之间的天数

时间:2016-06-04 05:36:18

标签: ios swift nsdate

我需要获得两个日期之间的天数,但如果我输入例如:2016-12-10和2017-01-10将会有负天数。这是在这两个日期之间的新年时发生的。

totalUnitCount

如何修改daysBetween(date:NSDate)函数以防止这种情况发生?

修改 请不要注意为什么它打印得非常好-334。这只是因为fromDate和toDate是一个月不同的日子。想要解决的问题是为什么回答是否定的,而不是应该如此。

解决: 结果证明是你们许多人想的。 fromDate大于toDate并导致负数。愚蠢的错误。大家好!

2 个答案:

答案 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)