【发布时间】:2013-04-05 08:25:57
【问题描述】:
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 库兼容)来解析这个语法。任何指向一个好的库的指针?
【问题讨论】:
标签: java parsing time jodatime intervals