一个 Cocoa NSFormatter 子类,用于将 ISO 8601 格式的字符串转换为 NSDate,反之亦然。
解析器使用 re2c 实现。感谢 re2c,它比 NSDateFormatter 快得多。
请注意,生成的解析器直接提交到这个仓库。这可能不是最佳选择。
已尝试使用 Cocoapods 的预构建命令来解决这个问题,但效果有限。请检查 podspec 以获取尝试的解决方案。
要将 ISO 8601 字符串转换为 NSDate。您可以使用 NJISO8601DateFromString() 函数而不需要任何配置。
NSDate *date = NJISO8601DateFromString(@"2011-02-27T11:03:06+09:00");
或者,您可以使用 NJISO8601Formatter,就像使用 NSDateFormatter 一样。
NJISO8601Formatter *formatter = [[NJISO8601Formatter alloc] init];
NSDate *date = [formatter dateFromString:@"2011-02-07T11:03:06+09:00"];
将 NSDate 转换为 ISO 8601 格式的字符串。
NJISO8601Formatter *formatter = [[NJISO8601Formatter alloc] init];
NSString *string = [formatter stringFromDate:date];
您还可以自定义输出格式,如下所示
[formatter setDateStyle:NJISO8601FormatterDateStyleWeekExtended];
[formatter setTimeZoneStyle:NJISO8601FormatterTimeZoneStyleExtended];
[formatter setFractionSeparator:NJISO8601FormatterFractionSeparatorDot];
[formatter setFractionDigits:6];
[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:(8 * 60 * 60)]];