2013-07-31 36 views
1

我正在计算一个已知的futureDate(格林威治标准时间/ UTC)和设备当前所在的当前时间(和时区)之间的NSTimeIntervalNSDate timeIntervalSinceNow和当地时区?

NSTimeInterval approachInterval = [futureDate timeIntervalSinceNow]; 

我知道NSDate不存储任何的timeZone具体的数据,这是当日期需要在设备上显示计算而被一些。

我的问题是,从我最初的测试(我目前在GMT + 0001),似乎NSTimeInterval返回不占我的本地时区。我必须手动计算时区偏移,并从我的间隔删除,并且这将是这样做,因为我不能用正确的时区提供一个NSDate的最佳方式(使用timeIntervalSinceDate:例如)

回答

4

NSDate代表一个时间点。它没有(也不需要!!)时区。所以“一个已知futureDate(这是在GMT/UTC)”“我不能提供NSDate与正确的时区”没有意义。

[futureDate timeIntervalSinceNow]返回futureDate和 当前日期和时间之间的时间间隔,并且完全独立于任何时区。

如果你没有得到预期的结果,那么也许你的计算futureDate是错误的。

+0

感谢您的回复,我明白,我说已知futureDate,因为该日期实际上是在UTC +0000,所以应该是正确的相对于你将从[NSDate date]得到的回报;我明白你的观点,忘记时间区域NSTimeInterval和我的futureDate都在+0000,所以它们之间的相对跨度应该是正确的。我会检查四舍五入,并确保我在计算中的某处不会丢失一些间隔。非常感激。 – fuzzygoat