7

我想在 Cocoa 中解析 ISO8601 日期,适用于 iOS 4+ 和 OSX 10.6+

StackOverflow 上已经有一些关于此的问题,但在我看来,没有一个包含好的答案。我认为这是一个很好的答案:

  1. 答案应该指向支持 ISO8601 的代码。对于 iOS 4+ 和 OSX 10.6+,此代码应在 XCode 4 下干净地编译。

  2. 该代码应支持所有可能的 ISO8601 日期格式。

    请注意,这里有很多很多的可能性。简单地用一两个格式字符串回答NSDateFormatter是不会减少它的。

  3. 答案不应该这个。那是因为它充满了危险的 32 位假设,它比必要的复杂得多,而且它不能用 XCode4/Clang 编译干净。底线:我根本不相信它!

谢谢,可可们。我很高兴知道这里是否有真正的答案!

4

1 回答 1

6

最好的方法是这个库。☺</p>

我应该在该页面上添加一个指向Bitbucket repo的链接,其中包含更新的源代码(包括 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:使用更长的方法之一。

如果你的意思是别的,我想听听,这样我就可以改进图书馆。

于 2011-06-01T00:57:35.280 回答