ISO 8601 Java 中的时间间隔解析java.time
ISO 8601 定义了表示时间间隔的语法。
有四种方法可以表示时间间隔:
- 开始和结束,如“2007-03-01T13:00:00Z/2008-05-11T15:30:00Z”
- 开始和持续时间,例如“2007-03-01T13:00:00Z/P1Y2M10DT2H30M”
- 持续时间和结束,如“P1Y2M10DT2H30M/2008-05-11T15:30:00Z”
- 仅持续时间,例如“P1Y2M10DT2H30M”,以及其他上下文信息
如果结束值中缺少任何元素,则假定它们与开始值(包括时区)相同。该标准的这一功能允许时间间隔的简洁表示。例如,两小时会议的日期(包括开始和结束时间)可以简单地显示为“2007-12-14T13:30/15:30”,其中“/15:30”表示“/2007-12-14T15:30”(与开始日期相同的日期),或每月计费周期的开始日期和结束日期显示为“2008-02-15/03-14”,其中“/03-14”表示“/2008-03-14”(与开始年份相同)。
此外,重复间隔是通过在间隔表达式的开头添加“R[n]/”来形成的,其中R用作字母本身,[n]被重复次数替换。省略 [n] 的值意味着无限的重复次数。因此,要从“2008-03-01T13:00:00Z”开始重复“P1Y2M10DT2H30M”的间隔五次,请使用“R5/2008-03-01T13:00:00Z/P1Y2M10DT2H30M”。
我正在寻找一个好的Java解析器(如果可能的话与Joda-Time库兼容)来解析这种语法。任何指向一个好库的指针?