2012-04-07 114 views
1

我已閱讀了關於此的所有帖子,但仍未解決問題。使用NSDateFormatter解析ISO 8601

下面是我試圖解析爲一個NSDate對象的字符串:

2012-04-08T12:00:00.00+02:00 

據我所知,這個問題是時區格式。這是我想要的日期格式字符串:

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

感謝您的任何幫助。

+1

這看起來很像: http://stackoverflow.com/questions/2201216/is-there-a-simple-way-of-converting-an-iso8601-timestamp-to-a-formatted -sdate 其中有三個答案。 – DRVic 2012-04-07 19:26:53

+2

我認爲這個線程沒有解決這個問題 - 還有另一個線程在某個地方。答案的要點是,在嘗試使用NSDateFormatter解析日期之前,必須以某種方式刪除最後一個「:」字符。 – 2012-04-07 19:48:24

+1

我見過這個問題。它不回答我的問題。答案1甚至不回答問題,答案2不使用'NSDateFormatter',答案3使用iOS上不存在的方法。 – edc1591 2012-04-07 22:19:24

回答

3

三件事:

  • 使用 - [NSDateFormatter getObjectValue:forString:範圍:錯誤:]方法學的字符串多少被解析並防止進一步解析了什麼錯誤。

  • ZZZZ格式字符串對應類似於「GMT + 02:00」的內容,其中帶有「GMT」。您可能需要將其注入到要解析的字符串中才能正常工作。

  • Apple's Data Formatting Guide建議"Consider Unix Functions for Fixed-Format, Unlocalized Dates"

+0

謝謝!注入「格林威治標準時間」的竅門。我還會注意到一個有用的提示是使用你的格式註銷'NSDateFormatter'期望的日期,看起來像這樣:'[dateFormatter stringFromDate:[NSDate date]]'。 – edc1591 2012-04-07 22:41:28

0

現在專用NSISO8601DateFormatter可用。