【发布时间】:2011-02-06 15:12:36
【问题描述】:
有没有一种简单的方法可以使用当前的 UTC 日期/时间来初始化 NSDate?
【问题讨论】:
-
[NSDate date]会起作用吗?我不确定是不是 UTC。 -
没有设置为 UTC 的
NSDate这样的东西,它没有与之关联的时区。 -
@MurraySagal 你错了——
NSDate代表一个瞬间(NSDate这个名字有点用词不当)。在描述诸如“2001 年 1 月 1 日的第一个瞬间”之类的时间时,您需要一个时区来计算出您所谈论的确切时间,但是一旦创建了NSDate,就没有与之关联的时区它。 -
@NickForge NSDate 被创建为“格林威治标准时间 2001 年 1 月 1 日的第一个瞬间”,即特定时区中的特定时间,这一事实是不可变的,并且对于日期为何起作用至关重要做。如果我们在不同的时区并且我们同时记录了这个,
NSLog(@"since1970= %f", [[NSDate date] timeIntervalSince1970]);结果是一样的。为什么?因为它是相对于特定时区 (GMT) 中的特定时间点而言的,无论用户身在何处。它与 GMT 相关的事实不会在创建后消失。如果没有这个锚,日期将是任意的。 -
@MurraySagal 你在不同的方面都是对的,但尼克说“没有
NSDate设置为UTC”更正确,因为你不能设置时区NSDate,你说它“有一个时区”是不正确的。确实,它是相对于特定时区相对定义的,但说它“具有”时区意味着时区是NSDate的属性,而事实并非如此。
标签: iphone objective-c ios nsdate utc