2013-07-31 35 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