モジュール java.base

パッケージjava.time.temporal

フィールドと単位を使用した日時へのアクセス、および日時アジャスタ。

このパッケージはベース・パッケージの上に展開され、より強力なユース・ケース向けの追加機能を提供します。 次のサポートが含まれています。

  • 年、月、日、時間などの日付/時間の単位
  • 月、曜日、時などの日付/時間のフィールド
  • 日付/時間の調整関数
  • 異なる週の定義

フィールドと単位

日付と時間はフィールドと単位によって表されます。 単位は時間量の測定に使用されます(年、日、分など)。 どの単位もTemporalUnitを実装します。 既知の単位のセットはChronoUnitで定義されています(DAYSなど)。 単位インタフェースは、アプリケーション定義の単位を使用できるように設計されています。

フィールドは、より大きい日付/時間の部分を表すために使用されます(年、月、秒など)。 どのフィールドもTemporalFieldを実装します。 既知のフィールドのセットはChronoFieldで定義されています(HOUR_OF_DAYなど)。 追加のフィールドは、JulianFieldsWeekFields、およびIsoFieldsによって定義されます。 フィールド・インタフェースは、アプリケーション定義のフィールドを使用できるように設計されています。

このパッケージに付属しているツールを使用すると、フレームワークにもっとも適した一般的な方法で日付と時間の単位およびフィールドにアクセスできます。 Temporalは、フィールドをサポートする日付/時間型の抽象を提供します。 そのメソッドは、フィールドの値の取得、変更されたフィールド値による新しい日付/時間の作成、および追加情報の問合せ(通常はオフセットまたはタイムゾーンの抽出に使用される)をサポートします。

アプリケーション・コードでフィールドを使用するのは、簡易メソッドがないフィールドを取得する場合などです。 たとえば、「月の日」の取得はよく行われるため、LocalDategetDayOfMonth()というメソッドがあります。 しかし、一般的でないフィールドの場合は、そのフィールドを使用する必要があります。 たとえば、date.get(ChronoField.ALIGNED_WEEK_OF_MONTH)です。 フィールドは有効値の範囲へのアクセスも提供します。

調整と問合せ

日付/時間の問題空間の重要な部分は、日付を「月の最後の日」、「次の水曜日」といった関連する新しい値に調整することです。 これらは、ベースの日付/時間を調整する関数としてモデル化されます。 関数はTemporalAdjusterを実装し、Temporalを操作します。 一般的な関数のセットがTemporalAdjustersで提供されています。 たとえば、ある日付より後で最初に出現するある曜日を見つけるには、TemporalAdjusters.next(DayOfWeek)を使用し、たとえばdate.with(next(MONDAY))とします。 アプリケーションでは、TemporalAdjusterを実装してアジャスタを定義することもできます。

TemporalAmountインタフェースは、相対的な時間の量をモデル化します。

日付/時間の調整に加え、TemporalQueryを介して問合せを可能にするインタフェースが用意されています。 問合せインタフェースのもっとも一般的な実装はメソッド参照です。 主要なクラスのfrom(TemporalAccessor)メソッドは、LocalDate::fromMonth::fromのようにすべて使用できます。 追加の実装がTemporalQueriesでstaticメソッドとして提供されています。 アプリケーションでは、TemporalQueryを実装して問合せを定義することもできます。

週の定義はロケールによって異なります。 たとえば、通常ヨーロッパでは週は月曜日から始まりますが、米国では日曜日から始まります。 WeekFieldsクラスはこの違いをモデル化します。

ISO暦体系では、週ベースでの年の分割も定義されています。 これは、月曜日から月曜日までの完全な週を基にして年を定義します。 これはIsoFieldsでモデル化されます。

パッケージの仕様

他で指定がない場合、このパッケージの任意のクラスまたはインタフェースのメソッドまたはコンストラクタにnull引数を渡すとNullPointerExceptionがスローされます。 nullの動作のサマリーとしては、Javadocの「@param」の定義が使用されます。 各メソッドのドキュメントに「@throws NullPointerException」は明記されていません。

すべての計算で数値のオーバーフローをチェックし、ArithmeticExceptionまたはDateTimeExceptionをスローするようにしてください。

導入されたバージョン:
1.8