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], означает неограниченное количество повторений. Итак, чтобы повторить интервал "P1Y2M10DT2H30M" пять раз, начиная с "2008-03-01T13: 00: 00Z", используйте "R5/2008-03-01T13: 00: 00Z/P1Y2M10DT2H30M".
Я ищу хороший Java-анализатор (если возможно, совместимый с библиотекой Joda-Time), чтобы проанализировать этот синтаксис. Любые указатели на хорошую библиотеку?