我想解析Cocoa中的ISO8601日期,适用于iOS 4+和OSX 10.6+
在StackOverflow上已经有一些关于此的问题,但是我认为没有一个包含很好的答案。我认为这是一个很好的答案:

  • 答案应该指向支持ISO8601的代码。对于iOS 4+和OSX 10.6+,此代码应在XCode 4下完全编译。
  • 该代码应支持所有可能的ISO8601日期格式。
    请注意,这里有很多可能性。只需用一两个格式字符串回答NSDateFormatter就不会削减它。
  • 答案应为而不是。那是因为它充满了危险的32位假设,它比必要的要复杂得多,并且不能使用XCode4/Clang进行干净的编译。底线:我一点都不相信!

  • 谢谢, cocoa 同胞们。我很高兴发现这里是否有真正的答案!

    最佳答案

    最好的方法是this library。 ☺

    我应该在该页面上添加一个指向the 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:

    如果您还有其他意思,我想听听,以便改进图书馆。

    关于objective-c - 在 cocoa 中解析ISO8601日期的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6194998/

    10-08 23:03