NSDate timeIntervalSinceDate计算错误60分钟



试图弄清楚以下代码导致90000的原因,这正好是一天中的1小时。创建的日期都设置为连续几天的中午,因此答案应为86400(24*60*60)。

let currentCalendar = NSCalendar.currentCalendar();
let components1 = NSDateComponents()
components1.year = 2015
components1.month = 11
components1.day = 1
components1.hour = 12
components1.minute = 0
components1.second = 0
let myDate1 = currentCalendar.dateFromComponents(components1)!
let components2 = NSDateComponents()
components2.year = 2015
components2.month = 10
components2.day = 31
components2.hour = 12
components2.minute = 0
components2.second = 0
let myDate2 = currentCalendar.dateFromComponents(components2)!
let difference = myDate1.timeIntervalSinceDate(myDate2)

运行swift 2(Xcode 7.0)

夏令时将于2015年11月1日结束。25小时的时差是正确的。夏令时开始时,春季也将有23小时的一天。

这就是为什么,如果你想确保在另一个日期获得相同的时钟时间,你不能只加或减24小时的倍数。

这只适用于遵守夏令时的地方,这可能就是为什么最初问题的一些评论者看到当地时区有24小时的差异。

最新更新