Duration
の代わりにlong
クラスを使用しようとしています。優れたリテラル構文があります。私はその柔軟性が好きですが、奇妙に見えます。
「PT10S」は10秒を意味しますが、「10秒」を受け入れるにはどのような問題がありますか?!いいよ、気にするな。
なぜPTプレフィックスが選択されたのか(たとえば "DU"ではない)、なぜここではプレフィックスが何もないよりも優れているのか興味があります。
Jesperにリンクされているページにあるように( ISO-8601-データ要素と交換フォーマット-情報交換-日付と時刻の表現 )
P is the duration designator (for period) placed at the start of the duration representation.
Y is the year designator that follows the value for the number of years.
M is the month designator that follows the value for the number of months.
W is the week designator that follows the value for the number of weeks.
D is the day designator that follows the value for the number of days.
T is the time designator that precedes the time components of the representation.
したがって、PTは期間を意味します。
これが選択された「理由」は、規格を作成したISOメンバーに尋ねる必要がありますが、私の推測では、解析が容易だと思います。 (短く明確な)
Javaは、一定期間ISO 8601標準形式のサブセットを採用しています。そのため、「なぜ」というのは、標準がそのままの形で書かれた理由であり、推測ゲームです。私の目的は:
P
が選択されたため、期間を日付や時刻と区別できます。特に、期間はローカルの日付と時刻と同じ形式で記述される場合があるため、たとえばP0003-06-04T12:30:05
3年6か月4日12時間30分5秒の場合、P
を区別する必要がある場合があります。 P
は、期間が予期されていた場所でまったく異なる文字列を渡す場合に備えて、少しですが迅速で便利な検証も提供します。はい、 PT10S
は奇妙に見えますが、慣れるとすぐに持続時間として認識されるため、実用的です。T
は、次の2つの理由で選択されました。T
を含む日時文字列との一貫性のために、たとえば2018-07-04T15:00
2018年7月4日15:00時。M
を明確にするには:P3M
は3か月という意味ですが、PT3M
は3分を意味します。