ISO 8601では、時間間隔を表すための構文が定義されています。
時間間隔を表現するには、次の 4 つの方法があります。
- 「2007-03-01T13:00:00Z/2008-05-11T15:30:00Z」などの開始と終了
- 「2007-03-01T13:00:00Z/P1Y2M10DT2H30M」などの開始と期間
- 「P1Y2M10DT2H30M/2008-05-11T15:30:00Z」などの期間と終了
- 「P1Y2M10DT2H30M」などの期間のみ、追加のコンテキスト情報を含む
終了値に欠落している要素がある場合は、タイム ゾーンを含めて開始値と同じであると見なされます。標準のこの機能により、時間間隔の簡潔な表現が可能になります。たとえば、開始時刻と終了時刻を含む 2 時間の会議の日付は、"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」の間隔を 5 回繰り返すには、「R5/2008-03-01T13:00:00Z/P1Y2M10DT2H30M」を使用します。
この構文を解析するための優れた Java パーサー (可能であれば Joda-Time ライブラリと互換性がある) を探しています。良いライブラリへのポインタはありますか?