在可可中解析ISO8601日期的正确方法是什么?

问题描述

| 我想在Cocoa中解析ISO8601日期,适用于iOS 4+和OSX 10.6+ 在StackOverflow上已经有一些关于此的问题,但是在我看来,这些问题都没有一个好的答案。我认为这是一个很好的答案: 答案应该指向支持ISO8601的代码。对于iOS 4+和OSX 10.6+,此代码应在XCode 4下完全编译。 该代码支持所有可能的ISO8601日期格式。 请注意,这里有很多可能性。只需用一两个格式的字符串回答
NSDateFormatter
就不会削减它。 答案不应该是这个库。那是因为它充满了危险的32位假设,它比必要的要复杂得多,并且不能使用XCode4 / Clang进行干净的编译。底线:我一点都不相信! 谢谢,可可同胞们。我很高兴知道这里是否有真正的答案!     

解决方法

        最好的方法是该库。 ☺ 我应该在该页面上添加到Bitbucket存储库的链接,其中包含较新的源代码(包括32位和Clang修复程序!),并且具有问题跟踪器。如果发现任何其他错误,请归档。 我也想知道您的意思是“比必要的更为复杂”。正常用法很简单:
ISO8601DateFormatter *formatter = [[[ISO8601DateFormatter alloc] init] autorelease]; //Or,if you prefer,create it once in -init and own it until -dealloc 
NSDate *parsedDate = [formatter dateFromString:inString];
NSString *unparsedString = [formatter stringFromDate:inDate];
如果您需要更多信息(例如,保留时区),则可以将
dateFromString:
stringFromDate:
切换为较长的方法之一。 如果您还有其他意思,我想听听,以便改进图书馆。