Objective c 是+;(NSTimeInterval)TimeIntervalenceReferenceDate是否区分时区?

Objective c 是+;(NSTimeInterval)TimeIntervalenceReferenceDate是否区分时区?,objective-c,nsdate,Objective C,Nsdate,如果他们两人同时做这件事,在美国做这件事的人会看到和在美国做这件事的人相同的数字吗 文件上说,时间从2001年1月1日格林威治标准时间开始。这意味着从格林威治时间到1月1日 然而,每个人都会看到不同的时钟。这意味着它是本地化的 所以这是模棱两可的。哪一个是对的?不,根据文件: 时间间隔自参考日期起 返回值系统绝对参考日期之间的间隔 (格林尼治标准时间2001年1月1日第一时间)以及当前日期和 时间 当前日期取决于本地时间(+(id)日期)。所以,如果一个中国人和一个德国人在同一时间按下一个按钮,

如果他们两人同时做这件事,在美国做这件事的人会看到和在美国做这件事的人相同的数字吗

文件上说,时间从2001年1月1日格林威治标准时间开始。这意味着从格林威治时间到1月1日

然而,每个人都会看到不同的时钟。这意味着它是本地化的


所以这是模棱两可的。哪一个是对的?

不,根据文件:

时间间隔自参考日期起

返回值系统绝对参考日期之间的间隔 (格林尼治标准时间2001年1月1日第一时间)以及当前日期和 时间

当前日期取决于本地时间(+(id)日期)。所以,如果一个中国人和一个德国人在同一时间按下一个按钮,时间间隔将不同~6小时。但在他们看来,如果他们在当地时间下午1点按下按钮,两者的间隔将是相同的

编辑:

事实上我错了,正如马丁指出的那样:

NSDate表示一个时间点,对时间一无所知 区域。如果使用NSLog(@“%@”)显示NSDate的值,[NSDate 日期),然后使用GMT将日期转换为字符串进行显示


因此,要回答您的问题:是的,它将是相同的。

NSDate
不存储时区信息。它总是相对于GMT/UTC时间,这意味着你描述的两个人都会得到相同的结果。

否。请参见[[1]:好的,一个人说这取决于你在哪里。另一个人说不,这不取决于当前时间。NSLog of[NSDate]顺便说一句,显示GMT时间。正好相反:当前日期,即
[NSDate date]
的结果不依赖于本地时区。-如果两个人执行
[[NSDate date]timeintervalnceReferenceDate]
在同一时刻,结果是相同的。如果一个中国人在当地时间下午1点执行,而一个德国人在当地时间下午1点执行,结果将不同。哈,NSDate真的显示GMT时间吗?因为我实际上生活在GMT时间(我住在法国国家),所以我可能做了错误的断言。我以为NSDate给了你实际的时钟时间…嗯,这其实很有趣。但是文档说+date创建并返回一个新的日期设置为当前的日期和时间。所以如果NSDate日期是基于GMT的,你对你的问题的回答是肯定的,但是如果NSDate日期不是GMT,那么它显然不是。@MrBonjour:a
 NSDate
表示一个时间点,对时区一无所知。如果您使用
NSLog(@“%@,[NSDate date])显示
NSDate
的值,则使用GMT将日期转换为字符串进行显示。没关系。我在编辑中投票给了您。我不知道是谁投票给了您。