パッケージjava.time.temporal
フィールドと単位を使用した日時へのアクセス、および日時アジャスタ。
このパッケージはベース・パッケージの上に展開され、より強力なユース・ケース向けの追加機能を提供します。 次のサポートが含まれています。
- 年、月、日、時間などの日付/時間の単位
- 月、曜日、時などの日付/時間のフィールド
- 日付/時間の調整関数
- 異なる週の定義
フィールドと単位
日付と時間はフィールドと単位によって表されます。 単位は時間量の測定に使用されます(年、日、分など)。 どの単位もTemporalUnit
を実装します。 既知の単位のセットはChronoUnit
で定義されています(DAYS
など)。 単位インタフェースは、アプリケーション定義の単位を使用できるように設計されています。
フィールドは、より大きい日付/時間の部分を表すために使用されます(年、月、秒など)。 どのフィールドもTemporalField
を実装します。 既知のフィールドのセットはChronoField
で定義されています(HOUR_OF_DAY
など)。 追加のフィールドは、JulianFields
、WeekFields
、およびIsoFields
によって定義されます。 フィールド・インタフェースは、アプリケーション定義のフィールドを使用できるように設計されています。
このパッケージに付属しているツールを使用すると、フレームワークにもっとも適した一般的な方法で日付と時間の単位およびフィールドにアクセスできます。 Temporal
は、フィールドをサポートする日付/時間型の抽象を提供します。 そのメソッドは、フィールドの値の取得、変更されたフィールド値による新しい日付/時間の作成、および追加情報の問合せ(通常はオフセットまたはタイムゾーンの抽出に使用される)をサポートします。
アプリケーション・コードでフィールドを使用するのは、簡易メソッドがないフィールドを取得する場合などです。 たとえば、「月の日」の取得はよく行われるため、LocalDate
にgetDayOfMonth()
というメソッドがあります。 しかし、一般的でないフィールドの場合は、そのフィールドを使用する必要があります。 たとえば、date.get(ChronoField.ALIGNED_WEEK_OF_MONTH)
です。 フィールドは有効値の範囲へのアクセスも提供します。
調整と問合せ
日付/時間の問題空間の重要な部分は、日付を「月の最後の日」、「次の水曜日」といった関連する新しい値に調整することです。 これらは、ベースの日付/時間を調整する関数としてモデル化されます。 関数はTemporalAdjuster
を実装し、Temporal
を操作します。 一般的な関数のセットがTemporalAdjusters
で提供されています。 たとえば、ある日付より後で最初に出現するある曜日を見つけるには、TemporalAdjusters.next(DayOfWeek)
を使用し、たとえばdate.with(next(MONDAY))
とします。 アプリケーションでは、TemporalAdjuster
を実装してアジャスタを定義することもできます。
TemporalAmount
インタフェースは、相対的な時間の量をモデル化します。
日付/時間の調整に加え、TemporalQuery
を介して問合せを可能にするインタフェースが用意されています。 問合せインタフェースのもっとも一般的な実装はメソッド参照です。 主要なクラスのfrom(TemporalAccessor)
メソッドは、LocalDate::from
やMonth::from
のようにすべて使用できます。 追加の実装がTemporalQueries
でstaticメソッドとして提供されています。 アプリケーションでは、TemporalQuery
を実装して問合せを定義することもできます。
週
週の定義はロケールによって異なります。 たとえば、通常ヨーロッパでは週は月曜日から始まりますが、米国では日曜日から始まります。 WeekFields
クラスはこの違いをモデル化します。
ISO暦体系では、週ベースでの年の分割も定義されています。 これは、月曜日から月曜日までの完全な週を基にして年を定義します。 これはIsoFields
でモデル化されます。
パッケージの仕様
他で指定がない場合、このパッケージの任意のクラスまたはインタフェースのメソッドまたはコンストラクタにnull引数を渡すとNullPointerException
がスローされます。 nullの動作のサマリーとしては、Javadocの「@param」の定義が使用されます。 各メソッドのドキュメントに「@throws NullPointerException
」は明記されていません。
すべての計算で数値のオーバーフローをチェックし、ArithmeticException
またはDateTimeException
をスローするようにしてください。
- 導入されたバージョン:
- 1.8
-
クラス説明フィールドの標準セット。日付期間の単位の標準セット。四半期、暦週の基準年など、ISO-8601暦体系に固有のフィールドと単位です。ユリウス日へのアクセスを提供する一連の日付フィールドです。時間的オブジェクト(日付、時間、オフセット、またはそれらのなんらかの組合せなど)への読取り/書込みアクセスを定義するフレームワークレベルのインタフェースです。時間的オブジェクト(日付、時間、オフセット、またはそれらのなんらかの組合せなど)への読取り専用アクセスを定義するフレームワークレベルのインタフェースです。時間的オブジェクトを調整するための方針です。一般的かつ有用なTemporalAdjustersです。「6時間」、「8日間」、「2年3か月」などの時間量を定義するフレームワークレベルのインタフェースです。月や分などの日時フィールド。
TemporalQuery
の一般的な実装です。時間的オブジェクトを照会するための方針です。日間、時間などの日付/時間の単位です。UnsupportedTemporalTypeExceptionは、ChronoFieldまたはChronoUnitがTemporalクラスでサポートされていないことを示します。日付/時間フィールドの有効な値の範囲です。曜日、「月の週番号」、および「年の週番号」フィールドのローカライズされた定義です。