2012-04-07 74 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可用。