2013-10-27 82 views
-1

我已經試了又試和研究,並試圖再次,但我不能格式化這個NSDateFormatter無法格式化日期

日期爲: 「2013-08-08T11:10:09-07:00」

我試過使用「yyyy」 - 'MM' - 'DD'T'HH':'mm':'ssZ'以及一系列不同的排列組合,但無濟於事。我想也許服務器發送的時區格式不正確。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyy'-'MM'-'DD'T'HH':'mm':'ssZ"]; 

return [dateFormatter dateFromString:[dictionary objectForKey:key]]; 

任何線索?

在此先感謝

+0

哪裏是你的代碼中發現了什麼? – Tim

+0

http://b2cloud.com.au/how-to-guides/nsdateformatter-format-strings請教這個,線索MM是錯的,DD是錯的。 – Tim

+0

道歉,我已經編輯了相應的帖子 –

回答

2

對於非本地化ISO偏移您使用,如,-07:00 - 你需要在你要使用的格式5個Z字符。因此,對於源數據給出正確的格式字符串是:

yyyy-MM-dd'T'HH:mm:ssZZZZZ 

雖然目前使用的技術標準不要求的日期和時間分隔符進行轉義,傑夫在評論中提到,它可能不是這是一個糟糕的主意,特別是如果源日期來自服務器或其他東西。關於如何使這些替代品(如字母)進行討論,這些替代品會因地區特定的日期和時間分隔符而發生變化。它也不會傷害到從技術角度逃避他們,這只是難以閱讀:

yyyy'-'MM'-'dd'T'HH':'mm':'ssZZZZZ 

欲瞭解更多信息,當前的日期格式是基於Unicode技術規格#​​35。爲#35日期和時間模式規範可以在http://www.unicode.org/reports/tr35/tr35-25.html#Date_Format_Patterns