iPhone:NSDate和DST

时间:2012-09-14 14:05:00

标签: iphone ios nsdate dst

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

[startDate timeIntervalSinceDate: endDate]

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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

Reference

希望这能清除你的怀疑

答案 2 :(得分:0)

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