我正在使用 NSDate
来衡量程序的执行情况。我在开始时创建了 NSDate
实例,然后在结束时创建新实例 endDate 并调用:
[startDate timeIntervalSinceDate: endDate]
这工作正常,但我对如果程序在 DST 更改之前开始执行并在之后完成会发生什么感兴趣。 startDate 会被认为是在未来,timeInterval 方法会返回负值吗?
最佳答案
我相信 NSDates 是绝对时间点,不受夏令时或时区的影响。例如,现在纽约市和北京的时间点完全相同,尽管由于时区的原因纽约可能是上午 10 点,北京可能是晚上 10 点。从 DST 切换到 ST 后的一分钟将比之前晚一分钟,即使您的时钟可能早了 59 分钟。所以我认为,如果您使用 [NSDate date] 生成日期,您将始终获得正确的时间间隔。
您可以通过将设备的日期设置为刚好在切换到(或关闭)DST 之前并使用切换之前的开始日期和切换之后的结束日期记录间隔来测试它。
关于iPhone:NSDate 和夏令时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12426181/