4

NSDate用来衡量程序的执行。我NSDate在开始时创建实例,然后在结束时创建新实例 endDate 并调用:

[startDate timeIntervalSinceDate: endDate]

这工作正常,但我很感兴趣如果程序在 DST 更改之前开始执行并在之后完成会发生什么。startDate 是否会被认为是将来,而 timeInterval 方法会返回负值?

4

3 回答 3

2

我相信 NSDates 是绝对时间点,不受夏令时或时区的影响。例如,现在纽约市和北京的时间点完全相同,尽管由于时区不同,纽约可能是上午 10 点,北京可能是晚上 10 点。从 DST 切换到 ST 后的一分钟将比之前晚一分钟,即使您的时钟读数可能提前 59 分钟。所以我认为,如果您使用 [NSDate date] 生成日期,您将始终获得正确的时间间隔。

您可以通过将设备的日期设置为切换到(或关闭)DST 之前的日期并使用切换之前的开始日期和切换之后的结束日期记录间隔来测试它。

于 2012-09-14T14:34:42.647 回答
0

这不仅仅是与 iPhone 有关的问题。我得到了一个关于服务器和客户端时间的链接。此问题的唯一解决方法是为 Maximo 应用程序服务器和不使用夏令时的 GUI 客户端选择一个时区。

参考

希望这可以消除您的疑问

于 2012-09-14T14:22:51.610 回答
0

达伦所暗示的似乎是真的。NSDate 是对从绝对参考日期 2001 年 1 月 1 日 00:00 GMT 开始的间隔的引用。所以类方法[NSDate date]将返回该间隔的表示。因此,日期不会被认为是将来。

于 2012-09-25T13:49:04.720 回答