Swift2 日期比较返回错误的值?(swift)

Swift2 日期比较返回错误的值?(swift),swift2,ios9,nsdate,Swift2,Ios9,Nsdate,我想用swift一天比较两个日期。随后编写了以下代码: let workoutdate: NSDate = participantdata[self.lastindexchecked].workout!.start! let todaysdate = NSDate() let order = NSCalendar.currentCalendar().compareDate(todaysdate, toDate: workoutdate, toUnitGranularity: .Day) swi

我想用swift一天比较两个日期。随后编写了以下代码:

let workoutdate: NSDate = participantdata[self.lastindexchecked].workout!.start!
let todaysdate = NSDate()
let order = NSCalendar.currentCalendar().compareDate(todaysdate, toDate: workoutdate, toUnitGranularity: .Day)

switch order {
case .OrderedDescending:
    print("DESCENDING")
case .OrderedAscending:
    print("ASCENDING")
case .OrderedSame:
    print("SAME")
}
但是,此代码似乎并不总是返回所需的结果

今天等于:

2016-08-20 20:51:26 +0000
当workoutdate等于:

2016-08-20 00:14:53 +0000
结果是“下降”

但是,当训练日期设置为不同的日期时,例如

2016-08-20 04:00:00 +0000
结果确实与预测的“相同”


谁知道发生了什么?< /P> < P> <代码> NSDATE <代码>是基础中的一个基本构造,这样的bug早就被检测和修复了。在你认为这是苹果的错误之前,先想想你自己的错误。最头痛的是涉及时区的日期

我在EDT(-0400)时区,所以:

todaysdate  = 2016-08-20 20:51:26 +0000 = 2016-08-20 16:51:26 -0400
workoutdate = 2016-08-20 00:14:53 +0000 = 2016-08-19 20:14:53 -0400
你可以看到,当用我的时区表示时,它们是如何落在不同的日子里的,
下降
正是这里所期望的

通过将日历设置为始终使用GTM,您可以通过以下几种方式解决此问题:

let calendar = NSCalendar.currentCalendar()
calendar.timeZone = NSTimeZone(forSecondsFromGMT: 0)
let order = calendar.compareDate(todaysdate, toDate: workoutdate, toUnitGranularity: .Day)

很抱歉把这个问题说成是苹果的bug,这不是我的本意。我错误地认为+0000表示时区,但事实显然并非如此。非常感谢。