OStack程序员社区-中国程序员成长平台

标题: ios - iOS 上的 DST 独立时间 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 06:01
标题: ios - iOS 上的 DST 独立时间

这是场景:

  1. 我的应用正在运行,它调用一些函数来获取当前时间并将该时间写入持久性数据库(即磁盘上)
  2. 我强行终止我的应用并关闭我的 iPhone
  3. 夏令时来了又去,我已经飞过半个地球,越过了国际日期变更线。
  4. 我打开我的 iPhone 并运行我的应用程序
  5. 我的应用读取数据库中的时间,调用一个函数来获取当前时间,并以秒/毫秒/等为单位计算真正耗时。考虑时区、日期线和 DST 变化。

在使用 C/Objective-C 的 iOS 上,我需要调用哪些函数来获取允许我计算真正耗时的当前时间?



Best Answer-推荐答案


对于第 1 步,您可以这样做:

NSDate *currentTime = [NSDate date];

或者,如果您不想要一个对象并且想要一个 double 值,您可以这样做:

NSTimeInterval currentTimestamp = [NSDate timeIntervalSinceReferenceDate];

然后,在第 5 步中,您再次执行完全相同的操作:

NSTimeInterval timeInTheDatabase = ...
NSTimeInterval currentTimestamp = [NSDate timeIntervalSinceReferenceDate];

那么真正耗时是这样的:

NSTimeInterval elapsedTime = currentTimestamp - timeInTheDatabase.

这将为您提供第一次和第二次之间的秒数。

为什么会这样?

之所以有效,是因为 NSDatesalways 在 GMT 中。在通过 NSDateFormatter 格式化显示之前,不会发生到您的时区的“转换”。

关于ios - iOS 上的 DST 独立时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21345554/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4