问题描述
|
我想在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:
切换为较长的方法之一。
如果您还有其他意思,我想听听,以便改进图书馆。