モジュール java.base

パッケージjava.time.temporal


パッケージ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
  • クラス
    説明
    フィールドの標準セット。
    日付期間の単位の標準セット。
    四半期、暦週の基準年など、ISO-8601暦体系に固有のフィールドと単位です。
    ユリウス日へのアクセスを提供する一連の日付フィールドです。
    時間的オブジェクト(日付、時間、オフセット、またはそれらのなんらかの組合せなど)への読取り/書込みアクセスを定義するフレームワークレベルのインタフェースです。
    時間的オブジェクト(日付、時間、オフセット、またはそれらのなんらかの組合せなど)への読取り専用アクセスを定義するフレームワークレベルのインタフェースです。
    時間的オブジェクトを調整するための方針です。
    一般的かつ有用なTemporalAdjustersです。
    「6時間」、「8日間」、「2年3か月」などの時間量を定義するフレームワークレベルのインタフェースです。
    月や分などの日時フィールド。
    TemporalQueryの一般的な実装です。
    時間的オブジェクトを照会するための方針です。
    日間、時間などの日付/時間の単位です。
    UnsupportedTemporalTypeExceptionは、ChronoFieldまたはChronoUnitがTemporalクラスでサポートされていないことを示します。
    日付/時間フィールドの有効な値の範囲です。
    曜日、「月の週番号」、および「年の週番号」フィールドのローカライズされた定義です。