2013-08-02 52 views
0

我遇到了我的代碼問題,不確定它有什麼問題。嘗試使用NSDateFormat時,iOS 6是否支持時區PHT?

NSString* dateFormat1 = @"EEE MMM dd HH:mm:ss V yyyy"; 
NSString* dateString1 = @"Fri Jul 26 00:00:00 PHT 2013"; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; 
[dateFormatter setDateFormat:dateFormat1]; 

我對iOS5.1結果:

2013-08-02 11:59:08.459 MySandbox[41502:c07] 2013-07-25 16:00:00 +0000 

對於iOS 6.0

2013-08-02 12:02:37.454 MySandbox[41581:c07] (null) 

*注意,我用V,而不是ZZZ或Z,因爲它仍然是空的。 *注2,我試圖改變PHT到PST,它的工作。將它更改爲JST,它不起作用。

我猜測我沒有使用正確的格式。不太確定我應該使用哪一種。

*注3,根據question,iOS5和iOS6確實發生了變化,所以我猜這就是iOS5工作的原因。

回答

1

根據these docs from AppleNSDateFormatter使用Unicode日期格式模式,它們是「Unicode技術標準#35」的一部分。此標準正在發展,iOS 5使用version 19,而iOS 6使用version 25

您可以閱讀「附錄J:時區顯示名稱」(version 19version 25)中支持的時區值。

我不確定爲什麼PHT以前支持,而不是它不支持。但總的來說,我能給出的最好建議是避免使用時區縮寫。雖然PHT是獨一無二的,但還有許多其他縮寫是不明確的。 See the list here

相反,您應該儘可能使用IANA時區名稱。 (tr-35標準稱這是「黃金區」)。在你的情況下,這將是Asia/ManilaYou can find a full list here。我不是Objective C開發人員,所以我不確定在輸入字符串中如何使用它。您可以嘗試VVVV格式說明符,但我不確定它是否直接接受IANA名稱。

您可能想要檢查[NSTimeZone abbreviationDictionary]的結果,如in this answer所示。在那篇文章中,它確實顯示了PHT = "Asia/Manila",但是我認爲從發佈日期開始它們是從iOS 5生成的。