iphone - 使用 NSDate 与时区/DST 无关的时间戳

标签 iphone cocoa-touch nsdate ios timestamp

我正在创建将发送到服务器的对象,并且我试图确保考虑到时区和夏令时问题,因此我希望我的时间戳为“自 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/

相关文章:

ios - 在 nsmutablearray 中单独的 future 日期

iPhone 设置

macos - 删除不会失效,直到保存: is it true?

ios - 当 UITableView 仍在垂直滚动时禁用 UITableViewCell 的水平滚动

ios - 如何从当前日期到特定 NSDate 进行倒计时?

ios - 从 NSDate SWIFT 截断时间

iphone - 如何在 coredata 上下文中使用预填充的数据库

iPhone 设备图片

objective-c - iOS 拉动刷新不适用于 iPhone X 等特定设备

iphone - 我需要在xcode4.2中恢复dealloc吗?