Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone:NSDate和DST_Iphone_Ios_Nsdate_Dst - Fatal编程技术网

iPhone:NSDate和DST

iPhone:NSDate和DST,iphone,ios,nsdate,dst,Iphone,Ios,Nsdate,Dst,我使用NSDate来衡量程序的执行情况。我在开始时创建NSDate的实例,然后在结束时创建新实例endDate并调用: [startDate timeIntervalSinceDate: endDate] 这很好,但我感兴趣的是,如果程序在DST更改之前开始执行,然后在DST更改之后完成,将会发生什么。startDate是否会被认为是将来的,而timeInterval方法将返回负值?这不是一个仅与iPhone相关的问题。我得到了一个关于服务器和客户端时间的链接。解决此问题的唯一方法是为Maxi

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

[startDate timeIntervalSinceDate: endDate]

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

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


希望这能消除您的疑虑

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


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

Darren所暗示的似乎是正确的。NSDate是对绝对参考日期(2001年1月1日00:00 GMT)的间隔的引用。因此类方法
[NSDate date]
将返回该间隔的表示形式。因此,日期不会被认为是在未来。

您如何获得开始日期和结束日期?有[NSDate date]?是的,我打电话给[NSDate date]