Handrolling ISO8601 Duration Support for Go
10 months ago
- #ISO8601
- #Go
- #Parsing
- 作者因缺乏合适的现有库而在Go中创建了一个自定义的ISO8601持续时间解析库。
- ISO8601持续时间格式复杂,以'P'开头,包含年份(Y)、月份(M)、天数(D)、小时(H)、分钟(M)和秒(S)的标识符。
- 现有的Go库要么不支持ISO8601持续时间,要么不符合规范要求。
- 作者的go-iso8601-duration库通过实现有限状态机(FSM)来精确解析ISO8601持续时间。
- 该FSM处理各种状态和转换以确保正确解析,包括对无效输入的容错处理。
- 该库提供将ISO8601持续时间转换为Go的time.Duration类型的方法,并可应用于time.Time实例。
- 通过大量测试确保符合ISO8601规范并处理边界情况。
- 作者批评ISO尽管使用纳税人资金却未免费公开标准文档的行为。