Parsowanie interwału ISO 8601 w Javie

ISO 8601 definiuje składnię reprezentującą przedział czasu.

Istnieją cztery sposoby wyrażania przedziału czasu:

Początek i koniec, np. „2007-03-01T13: 00: 00Z / 2008-05-11T15: 30: 00Z”Początek i czas trwania, np. „2007-03-01T13: 00: 00Z / P1Y2M10DT2H30M”Czas trwania i koniec, np. „P1Y2M10DT2H30M / 2008-05-11T15: 30: 00Z”Tylko czas trwania, taki jak „P1Y2M10DT2H30M”, z dodatkowymi informacjami o kontekście

Jeśli brakuje jakichkolwiek elementów w wartości końcowej, zakłada się, że są takie same, jak w przypadku wartości początkowej, w tym strefy czasowej. Ta cecha standardu pozwala na zwięzłe przedstawienie przedziałów czasu. Na przykład datę dwugodzinnego spotkania, w tym godziny rozpoczęcia i zakończenia, można po prostu przedstawić jako „2007-12-14T13: 30/15: 30”, gdzie „/ 15: 30” oznacza ”/ 2007-12- 14T15: 30 ”(ta sama data co początek) lub daty rozpoczęcia i zakończenia miesięcznego okresu rozliczeniowego jako„ 2008-02-15 / 03-14 ”, gdzie„ / 03-14 ”oznacza” / 2008-03 -14 ”(w tym samym roku co początek).

Ponadto powtarzające się interwały są tworzone przez dodanie „R [n] /” na początku wyrażenia interwałowego, gdzie R jest używane, ponieważ sama litera i [n] jest zastępowana liczbą powtórzeń. Pozostawienie wartości dla [n] oznacza nieograniczoną liczbę powtórzeń. Aby powtórzyć interwał „P1Y2M10DT2H30M” pięć razy, zaczynając od „2008-03-01T13: 00: 00Z”, użyj „R5 / 2008-03-01T13: 00: 00Z / P1Y2M10DT2H30M”.

Szukam dobrego parsera Java (jeśli to możliwe kompatybilnego z biblioteką Joda-Time), aby przeanalizować tę składnię. Jakieś wskazówki do dobrej biblioteki?

questionAnswers(4)

yourAnswerToTheQuestion