gpt4 book ai didi

ios - iOS 上的 DST 独立时间

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:44:12 26 4
gpt4 key购买 nike

场景如下:

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

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

最佳答案

对于第 1 步,您执行此操作:

NSDate *currentTime = [NSDate date];

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

NSTimeInterval currentTimestamp = [NSDate timeIntervalSinceReferenceDate];

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

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

真正流逝的时间是这样的:

NSTimeInterval elapsedTime = currentTimestamp - timeInTheDatabase.

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

为什么会这样?

之所以有效,是因为 NSDates 总是 GMT。只有通过 NSDateFormatter 格式化显示时,才会“转换”到您的时区。

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com