ISO8601-re2c 0.3.1

ISO8601-re2c 0.3.1

测试已测试
语言语言 Objective-CObjective C
许可证 BSD
发布日期上次发布2015年3月

Eric Jensen 维护。



  • Eric Jensen

ISO 8601 的 NSFormatter

一个 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)]];

支持的格式

  • 日历日期
  • 序数日期
  • 周日期
  • 带小数分数的本地时间
  • 午夜
  • 时区

不支持的格式

  • 公元前日期
  • 序数日期扩展表示的基本格式(年 > 9999)
  • 带闰秒的本地时间(秒 >= 60.0)
  • 时间间隔
  • 持续时间
  • 循环时间间隔