【发布时间】:2015-11-28 07:40:55
【问题描述】:
我有 2 个日期要比较。未来的日期和当前日期。当我比较它们时,我想检索它们在小时、分钟和秒方面的差异。我相信我必须这样做的代码是正确的,但是,我会根据我请求的组件返回不同的值。
我对所有示例都使用以下日历:
let calendar = NSCalendar.currentCalendar()
答:
let dateComponents = calendar.components([NSCalendarUnit.Year, NSCalendarUnit.Month, NSCalendarUnit.Day, NSCalendarUnit.Hour, NSCalendarUnit.Second, NSCalendarUnit.Minute], fromDate: NSDate(), toDate: date, options: [])
乙:
let dateComponents2 = calendar.components(.Hour, fromDate: NSDate(), toDate: date, options: [])
因此,对于上面的示例,dateComponents.hour 不等于 dateComponents2.hour,dateComponents2.hour 返回正确的值。
更有趣的是下面的案例:
答:
let dateComponents = calendar.components([NSCalendarUnit.Year, NSCalendarUnit.Month, NSCalendarUnit.Day, NSCalendarUnit.Hour, NSCalendarUnit.Second, NSCalendarUnit.Minute], fromDate: NSDate(), toDate: date, options: [])
乙:
let dateComponents2 = calendar.components(.Minute, fromDate: NSDate(), toDate: date, options: [])
现在,dateComponents.minute 不等于 dateComponents2.minute,但现在 dateComponents.minute 返回正确的值。
为什么会发生这种情况?我同时请求多个组件这一事实是否会影响返回值?
编辑 以下是使用以下日期的一些示例。返回值显示为小时、分钟、秒:
2015-11-29 10:59:00 +0000
2015-11-28 07:57:20 +0000
使用日期组件:
3、1、39
使用 dateComponents2(每个组件一个):
27、1621、97299
dateComponents2 中的小时值是正确的,而 dateComponents 中的分钟和秒值是正确的。
【问题讨论】:
-
@Rob 抱歉,我现在将发布示例日期和返回值!这些值与您的示例中的值不同......
-
@Rob 我已经用实际日期编辑了这个问题。有什么想法吗?
标签: ios cocoa-touch nsdate nscalendar