2011-04-12 48 views
2

當我打電話[NSDate date]它比它應該返回2小時。我檢查了我的電腦時鐘設置,它們都沒問題。我已經檢查iPhone和時區的設置和時鐘都可以。即使模擬器在頂部工具欄上顯示正確的時間。但是當我嘗試記錄當前日期時,它顯示比應該少2小時。我跑出了想法在哪裏看。NSDate日期比它應該返回2小時

+0

哪個時區做日誌的輸出報告?你在什麼時區?大概是這樣的:格林威治標準時間的10:00不是在+02:00之前的2點,而是在同一時間,只是格式不同。 – 2011-04-12 07:57:33

+0

檢查日曆?這是公曆嗎?嘗試使用'NSLog(@「%@」,[[NSTimeZone systemTimeZone] description])' – lxcid 2011-04-12 07:59:17

+0

這是格雷戈裏檢查你的時區。當我登錄systemTimeZone時,我得到了7200的偏移量,這恰好是我缺少的2小時。但我仍然無法弄清楚什麼是使用當地時間的最佳做法。我想這是一個格式化的東西,但我仍然沒有得到什麼? – paxx 2011-04-12 15:03:30

回答

0

,我發現我的解決方案在這裏:How to convert time to the time zone of the iPhone device?

所以,如果你想改變[NSDate的日期]指向當地時間只使用在上面的鏈接提供的代碼。不要忘記,從美國東部時間sourceTimeZone改變timeZoneWithAbbreviation于格林尼治標準時間(因爲NSDate的總是在GMT)

再次感謝大家的幫忙..

2

[NSDate date]返回的所有日期都在GMT時區。

當您使用任何NSDateFormatter,只需設置時區,它會打印出正確的時間。

+0

:D這是那種總是讓我感動的東西。當所有其他都失敗時,RTFM! – bdares 2011-04-12 07:57:30

+3

實際上,對象應該只包含時間,而不依賴於位置,其餘取決於你如何提取和顯示它,這是格林尼治標準時間似乎在鐘聲的地方;-) – 2011-04-12 07:59:15

0

仔細查看NSLog()語句的輸出。您會看到輸出始終包含使用標準UTC的時區。因此,考慮到時區,日期實際上是正確的。

+0

Tnx,但我仍然沒有得到在這種情況下最好的做法。我怎樣才能獲得當前的當地時間?通過格式化程序? – paxx 2011-04-12 15:04:53