2012-10-19 39 views
0

在美国执行此操作的人是否会与美国人在美国执行此操作时看到的数字相同?是+(NSTimeInterval)timeIntervalSinceReferenceDate timeZone是否敏感?

的文件说,它的时间开始于2001年1月1日格林尼治标准时间。这意味着它是在GreenWitch达到1月1日的时候。

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

所以这是不明确的。哪一个是对的?

+0

否。 见[http://stackoverflow.com/questions/3321541/timezone-dst-agnostic-timestamps-with-nsdate][1] [1]:http://stackoverflow.com/questions/3321541/timezone-dst-agnostic-timestamps-with-nsdate – xfx

回答

2

NSDate不存储时区信息。它始终与GMT/UTC时间相关,这意味着您描述的人都会得到相同的结果。

0

没有,根据DOC:

timeIntervalSinceReferenceDate

返回值系统的绝对基准日 之间的间隔和当前的日期(2001年,格林尼治标准时间1月1日的第一瞬间)和 时间。

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

编辑:

其实我错了,马丁指出:

一个NSDate的表示时间点和一无所知时间 区。如果使用NSLog显示NSDate的值(@“%@”,[NSDate date]),则日期将转换为使用GMT显示的字符串。

所以要回答你的问题:是的,它会是一样的。

+0

好的,一个人说这取决于你在哪里。另一个人说,不,它不依赖于当前时间。顺便提一下[NSDate date]的NSLog显示GMT时间。 –

+1

这只是另一种方式:当前日期,即'[NSDate date]'的结果* *不取决于本地时区。 - 如果两个人同时执行'[[NSDate date] timeIntervalSinceReferenceDate]',结果将是相同的。如果一个中国人在当地时间下午1点执行它,而一个德国人在当地时间下午1点执行它,结果将会不同。 –

+1

哈,NSDate真的显示GMT时间吗?因为我实际上住在格林尼治标准时间(我住在法国的国家),所以也许我做错了断言。我想NSDate会给你你的实际时间...嗯,这实际上很有趣。但文档说+日期创建并返回设置为当前日期和时间的新日期。所以如果NSDate的日期是格林威治标准时间,你对你的问题的答案是耶,但如果NSDate日期不是格林尼治标准时间,所以显然不是。 –