2015-04-03 106 views
0

服務器當前以UTC存儲日期,並且在應用程序用戶可以選擇任何時區。iOS - setDefaultTimeZone會自動處理夏令時和時區偏移嗎?

[NSTimeZone setDefaultTimeZone:[NSTimeZone timeZoneWithName:selectedTimeZone]] 

這將覆蓋當地時區。我還需要處理NSDateFormatter中的任何內容嗎?

setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss" 

我想我不需要調用setTimeZoneNSDateFormatter如果我重寫defaulttimezone。

然後[NSDate date]會返回適當的當前日期或它將是絕對時間?

+0

你試過了嗎?發生了什麼? – 2015-04-07 04:24:39

+0

還沒有..我們在服務器端有一個錯誤。而不是UTC,服務器在不同的時區發送日期。我將在UTC工作在localtimezone加上其他時區轉換在接下來的幾天 – Tariq 2015-04-07 06:27:21

+0

我看到了你的網站 - 馬特特色時區的代碼。你有建議如何處理服務器UTC到不同的時區轉換,並在發回服務器時再次轉換回UTC? – Tariq 2015-04-07 06:28:59

回答

1

這裏有幾個相關的問題。

這將覆蓋當地時區。我還需要處理NSDateFormatter中的任何內容嗎?

您不需要設置時區,因爲如果不這樣做,它會在創建日期格式化程序時使用默認值。

我想我不需要在NSDateFormatter中調用setTimeZone,如果我重寫defaulttimezone。

是的,但如果您更改了默認時區,則需要新建一個NSDateFormatter,因爲它不會注意到默認設置已更改。或者,您可以隨時更改日期格式化程序的時區,以便更改默認設置。

然後[NSDate date]會返回適當的當前日期或它將是絕對時間?

[NSDate date]的結果完全不受默認時區的影響。 NSDate沒有時區,所以即使您更改了默認值,您也會得到相同的結果。

setDefaultTimeZone會自動處理夏令時和時區偏移嗎?

如果時區使用夏令時,那麼是的。否則不。這似乎很明顯,但請記住,即使像America/New_York這樣的區域,GMT-0500等區域也沒有夏令時。