我正在创建将发送到服务器的对象,并且我试图确保考虑到时区和夏令时问题,因此我希望我的时间戳为“自 1970 年以来的秒数”,而不管时区等。
[NSDate timeintervalSinceReferenceDate]
足以满足此要求吗?在文档中,我知道它说的是自 January 1 1970 00:00:00 GMT
以来的时间,这就是我想要的,但是 NSDate 如何处理时区?如果用户在其设备设置为 EST 的情况下发送对象,然后将其设备更改为 PST,这会对时间戳产生什么样的影响?我的目标是让这没有什么区别,但我似乎无法从文档中收集到这一点。
日期编程是一个棘手的问题,我想确保我能做对。
最佳答案
文档说 timeIntervalSinceReferenceDate
给出自 2001 年以来的时间。timeIntervalSince1970
返回自 1970 年以来的时间。
但无论哪种方式,NSDate
都描述了一个时间点。用户的时区仅影响向用户显示日期的方式(例如通过 NSDateFormatter)。因此您不必担心时区。
但也许您确实需要担心用户的时钟出错。用户可以将时钟设置为他们想要的任何值,因此您不应该信任它来完成任何关键任务。请改用服务器时钟。
关于iphone - 使用 NSDate 与时区/DST 无关的时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3321541/