2010-01-31 58 views
1

我注意到在某些設備上,特定時區的NSTimeZonename方法可以返回不同的值。在測試布里斯班時區時,我的設備返回@"Australia/Brisbane",而其他用戶的設備返回"Etc/GMT-10"。兩個iPhone都運行3.1.2。正在返回不同的NSTimeZone名稱

Date and Time Programming Guide for Cocoa指出:

timeZoneWithName:傳遞給此方法的名稱可以是任何的 格式由系統理解爲 例如EST,ETC/GMT-2, 美洲/阿根廷/布宜諾斯艾利斯, 歐洲/摩納哥或美國/太平洋,如 所示,代碼如下。

我只想知道什麼可以確定使用哪個值?裝置?語言?

回答

1

我發現這是什麼原因。

當從Apple的內置列表中手動設置時區時,會返回正確且精確的時區名稱。但是,一些移動運營商通過空中提供當前時區偏移,如果是這種情況,Apple會提供「自動」設置,允許iPhone在移動到另一個時區時自動更改時區。

問題是,雖然提供了當前的GMT偏移量,但沒有辦法知道用戶處於哪個緯度。很明顯,例如,澳大利亞的幾個城市可能會有GMT -10的時區。因此,沒有具體的時區名稱可用,只有電話當前是GMT -10。

0

我從來沒有現場描述過你的描述。根據我的經驗,它返回你創建它的名字。

在任何情況下,如果您使用UI顯示的名稱,應該調用[NSTimeZone localizedName:locale:]來強制使用您想要的名稱樣式。

相關問題