モジュール java.base
パッケージ java.time.chrono

インタフェースChronoLocalDateTime<D extends ChronoLocalDate>

型パラメータ:
D - この日付/時間の日付の具象型
すべてのスーパー・インタフェース:
Comparable<ChronoLocalDateTime<?>>, Temporal, TemporalAccessor, TemporalAdjuster
既知のすべての実装クラス:
LocalDateTime

public interface ChronoLocalDateTime<D extends ChronoLocalDate> extends Temporal, TemporalAdjuster, Comparable<ChronoLocalDateTime<?>>
任意の暦のタイムゾーンのない日付/時間、高度なグローバリゼーション・ユース・ケース向けです。

ほとんどのアプリケーションでは、メソッド・シグネチャ、フィールド、および変数をこのインタフェースではなく、LocalDateTimeとして宣言してください。

ChronoLocalDateTimeは、Chronology chronology (または暦体系)がプラグイン可能な場合のローカル日付/時間の抽象表現です。 日付/時間はTemporalFieldによって表されるフィールドの形で定義され、ほとんどの一般的な実装がChronoFieldに定義されます。 暦は暦体系の動作と標準フィールドの意味を定義します。

このインタフェースを使用するタイミング

アプリケーションで複数の暦体系を処理する必要がある場合でも、APIの設計では、このインタフェースよりLocalDateTimeの使用が推奨されます。 この理由については、ChronoLocalDateで詳しく説明しています。

このインタフェースを使用する前に、ChronoLocalDateの説明を読み、理解しておいてください。

実装要件:
このインタフェースは、他のクラスが正常に動作するように、注意して実装する必要があります。 インスタンス化可能なすべての実装は、最終、不変、およびスレッドセーフである必要があります。 サブクラスは、可能であれば直列化可能にしてください。
導入されたバージョン:
1.8
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    default Temporal
    adjustInto(Temporal temporal)
    指定された時間的オブジェクトをこのオブジェクトと同じ日付と時間になるように調整します。
    atZone(ZoneId zone)
    この時間をタイムゾーンと組み合わせて、ChronoZonedDateTimeを作成します。
    default int
    暦を含めて、この日付/時間を別の日付/時間と比較します。
    boolean
    暦を含めて、この日付/時間が別の日付/時間と等しいかどうかをチェックします。
    default String
    指定されたフォーマッタを使用してこの日付/時間を書式設定します。
    時間的オブジェクトからChronoLocalDateTimeのインスタンスを取得します。
    default Chronology
    この日付/時間の暦を取得します。
    int
    この日付/時間のハッシュ・コード。
    default boolean
    暦を無視して、この日付/時間が、指定された日付/時間の後であるかどうかをチェックします。
    default boolean
    暦を無視して、この日付/時間が、指定された日付/時間の前であるかどうかをチェックします。
    default boolean
    暦を無視して、この日付/時間が、指定された日付/時間と等しいかどうかをチェックします。
    boolean
    指定されたフィールドがサポートされているかどうかをチェックします。
    default boolean
    指定された単位がサポートされているかどうかをチェックします。
    minus(long amountToSubtract, TemporalUnit unit)
    指定された期間を減算して、このオブジェクトと同じ型のオブジェクトを返します。
    量を減算して、このオブジェクトと同じ型のオブジェクトを返します。
    plus(long amountToAdd, TemporalUnit unit)
    指定された期間を追加して、このオブジェクトと同じ型のオブジェクトを返します。
    ある時間を追加して、このオブジェクトと同じ型のオブジェクトを返します。
    default <R> R
    query(TemporalQuery<R> query)
    指定された問合せを使用してこの日付/時間を問い合わせます。
    暦を無視して時系列順にChronoLocalDateTimeを比較するコンパレータを取得します。
    default long
    この日付/時間を、エポック(1970-01-01T00:00:00Z)からの秒数に変換します。
    default Instant
    この日付/時間をInstantに変換します。
    この日付/時間のローカル日付部分を取得します。
    この日付/時間のローカル・タイム部分を取得します。
    この日付/時間をStringとして出力します。
    調整を行って、このオブジェクトと同じ型の調整済オブジェクトを返します。
    with(TemporalField field, long newValue)
    指定されたフィールドを変更して、このオブジェクトと同じ型のオブジェクトを返します。

    インタフェースjava.time.temporal.Temporalで宣言されたメソッド

    until

    インタフェースjava.time.temporal.TemporalAccessorで宣言されたメソッド

    get, getLong, range
  • メソッドの詳細

    • timeLineOrder

      static Comparator<ChronoLocalDateTime<?>> timeLineOrder()
      暦を無視して時系列順にChronoLocalDateTimeを比較するコンパレータを取得します。

      このコンパレータは、基礎となる日付/時間のみを比較し、暦を比較しない点で、compareTo(java.time.chrono.ChronoLocalDateTime<?>)での比較と異なります。 これにより、異なる暦体系の日付を、ローカル時系列の日付/時間の位置に基づいて比較できます。 基礎となる比較は、エポック日と日のナノ秒の比較と同等です。

      戻り値:
      暦を無視して、時系列順で比較するコンパレータ
      関連項目:
    • from

      static ChronoLocalDateTime<?> from(TemporalAccessor temporal)
      時間的オブジェクトからChronoLocalDateTimeのインスタンスを取得します。

      これは、指定された時間的オブジェクトに基づいてローカル日付/時間を取得します。 TemporalAccessorは任意の日付と時間情報のセットを表し、このファクトリがChronoLocalDateTimeのインスタンスに変換します。

      変換では、時間的オブジェクトから暦と日付/時間を抽出し、組み合わせます。 この動作は、抽出された暦でChronology.localDateTime(TemporalAccessor)を使用する場合と同等です。 実装では、関連オブジェクトと同等のそれらのフィールドにアクセスするなどの最適化を実行することが許可されます。

      このメソッドは関数型インタフェースTemporalQueryのシグネチャに一致するため、メソッド参照ChronoLocalDateTime::fromを介して、問合せとして使用できます。

      パラメータ:
      temporal - 変換する一時オブジェクト、null以外
      戻り値:
      日付/時間、null以外
      例外:
      DateTimeException - ChronoLocalDateTimeに変換できない場合
      関連項目:
    • getChronology

      default Chronology getChronology()
      この日付/時間の暦を取得します。

      Chronologyは使用中の暦体系を表します。 ChronoFieldの紀元およびその他のフィールドは暦によって定義されます。

      戻り値:
      暦、null以外
    • toLocalDate

      D toLocalDate()
      この日付/時間のローカル日付部分を取得します。

      これは、この日付/時間と同じ年、月、および日のローカル日付を返します。

      戻り値:
      日付/時間の日付部分、null以外
    • toLocalTime

      LocalTime toLocalTime()
      この日付/時間のローカル・タイム部分を取得します。

      これは、この日付/時間と同じ時間、分、秒、およびナノ秒のローカル・タイムを返します。

      戻り値:
      日付/時間の時間部分、null以外
    • isSupported

      boolean isSupported(TemporalField field)
      指定されたフィールドがサポートされているかどうかをチェックします。

      これは、指定されたフィールドをこの日付/時間で問い合わせできるかどうかをチェックします。 falseの場合、rangeget、およびwith(TemporalField, long)メソッドの呼び出しは、例外をスローします。

      一連のサポートされるフィールドは、暦によって定義され、通常すべてのChronoField日付および時間フィールドを含みます。

      フィールドがChronoFieldでない場合、このメソッドの結果は、thisを引数として渡してTemporalField.isSupportedBy(TemporalAccessor)を呼び出すことによって取得します。 フィールドがサポートされているかどうかはフィールドによって決定します。

      定義:
      インタフェースTemporalAccessorisSupported
      パラメータ:
      field - チェックするフィールド、nullはfalseを返す
      戻り値:
      フィールドを問い合わせできる場合はtrue、そうでない場合はfalse
    • isSupported

      default boolean isSupported(TemporalUnit unit)
      指定された単位がサポートされているかどうかをチェックします。

      これは、指定された単位をこの日付/時間に加算または減算できるかどうかをチェックします。 falseの場合、plus(long, TemporalUnit)およびminusメソッドの呼び出しは、例外をスローします。

      一連のサポートされる単位は、暦によって定義され、通常、FOREVERを除くすべてのChronoUnit単位を含みます。

      単位がChronoUnitでない場合、このメソッドの結果は、thisを引数として渡してTemporalUnit.isSupportedBy(Temporal)を呼び出すことによって取得します。 単位がサポートされているかどうかは単位によって決定します。

      定義:
      インタフェースTemporalisSupported
      パラメータ:
      unit - チェックする単位、nullはfalseを返す
      戻り値:
      単位を加算/減算できる場合はtrue、できない場合はfalse
    • with

      default ChronoLocalDateTime<D> with(TemporalAdjuster adjuster)
      調整を行って、このオブジェクトと同じ型の調整済オブジェクトを返します。

      これは、指定されたアジャスタのルールに従って、この日付/時間を調整します。 単純なアジャスタは、年フィールドなどの1つのフィールドだけを設定するなどです。 複雑なアジャスタは、日付を月の最後の日に設定するなどです。 一般的な調整の選択は、TemporalAdjustersで指定します。 これらには、「月の最後の日」や「次の水曜日」を見つけることが含まれます。 アジャスタは、さまざまな長さの月やうるう年などの特別なケースの処理を担当します。

      このメソッドを使用する方法と理由を示すいくつかのサンプル・コード:

        date = date.with(Month.JULY);        // most key classes implement TemporalAdjuster
        date = date.with(lastDayOfMonth());  // static import from Adjusters
        date = date.with(next(WEDNESDAY));   // static import from Adjusters and DayOfWeek
       

      定義:
      インタフェースTemporalwith
      パラメータ:
      adjuster - 使用するアジャスタ、null以外
      戻り値:
      指定された調整を行った同じ型のオブジェクト、null以外
      例外:
      DateTimeException - 調整を実行できない場合
      ArithmeticException - 数値のオーバーフローが発生した場合
    • with

      ChronoLocalDateTime<D> with(TemporalField field, long newValue)
      指定されたフィールドを変更して、このオブジェクトと同じ型のオブジェクトを返します。

      これは、指定されたフィールドの値を変更して、このオブジェクトに基づいて新しいオブジェクトを返します。 たとえば、LocalDateで、これは年、月、または「月の日」を設定するために使用できます。 返されるオブジェクトはこのオブジェクトと同じ識別可能な型を持ちます。

      フィールドの変更が完全には定義されていない場合もあります。 たとえば、ターゲット・オブジェクトが1月31日を表す日付である場合、月を2月に変更することは不明な場合があります。 このようなケースでは、フィールドは結果の解決を担当します。 通常は1つ前の有効な日付が選択され、この例の場合は2月の最後の有効な日になります。

      定義:
      インタフェースTemporalwith
      パラメータ:
      field - 結果に設定するフィールド、null以外
      newValue - 結果のフィールドの新しい値
      戻り値:
      指定されたフィールドが設定された同じ型のオブジェクト、null以外
      例外:
      DateTimeException - フィールドを設定できない場合
      ArithmeticException - 数値のオーバーフローが発生した場合
    • plus

      default ChronoLocalDateTime<D> plus(TemporalAmount amount)
      ある時間を追加して、このオブジェクトと同じ型のオブジェクトを返します。

      これは、このtemporal (一時)を調整し、指定された量のルールに従って加算します。 この量は通常Periodですが、Durationなど、TemporalAmountインタフェースを実装する他のどの型であってもかまいません。

      このメソッドを使用する方法と理由を示すいくつかのサンプル・コード:

        date = date.plus(period);                // add a Period instance
        date = date.plus(duration);              // add a Duration instance
        date = date.plus(workingDays(6));        // example user-written workingDays method
       

      plusの後にminusを呼び出しても、同じ日付/時間が返されることは保証されません。

      定義:
      インタフェースTemporalplus
      パラメータ:
      amount - 追加する量、null以外
      戻り値:
      指定された調整を行った同じ型のオブジェクト、null以外
      例外:
      DateTimeException - 加算できない場合
      ArithmeticException - 数値のオーバーフローが発生した場合
    • plus

      ChronoLocalDateTime<D> plus(long amountToAdd, TemporalUnit unit)
      指定された期間を追加して、このオブジェクトと同じ型のオブジェクトを返します。

      このメソッドは、指定された期間を加算して、このオブジェクトに基づいて新しいオブジェクトを返します。 たとえば、LocalDateで、これは年、月、または日の数を加算するために使用できます。 返されるオブジェクトはこのオブジェクトと同じ識別可能な型を持ちます。

      フィールドの変更が完全には定義されていない場合もあります。 たとえば、ターゲット・オブジェクトが1月31日を表す日付である場合、1か月を加算することは不明な場合があります。 このようなケースでは、フィールドは結果の解決を担当します。 通常は1つ前の有効な日付が選択され、この例の場合は2月の最後の有効な日になります。

      定義:
      インタフェースTemporalplus
      パラメータ:
      amountToAdd - 加算する指定された単位の量、負の場合もある
      unit - 加算する量の単位、nullでない
      戻り値:
      指定された期間を加算した同じ型のオブジェクト、null以外
      例外:
      DateTimeException - 単位を加算できない場合
      ArithmeticException - 数値のオーバーフローが発生した場合
    • minus

      default ChronoLocalDateTime<D> minus(TemporalAmount amount)
      量を減算して、このオブジェクトと同じ型のオブジェクトを返します。

      これは、このtemporal (一時)を調整し、指定された量のルールに従って減算します。 この量は通常Periodですが、Durationなど、TemporalAmountインタフェースを実装する他のどの型であってもかまいません。

      このメソッドを使用する方法と理由を示すいくつかのサンプル・コード:

        date = date.minus(period);               // subtract a Period instance
        date = date.minus(duration);             // subtract a Duration instance
        date = date.minus(workingDays(6));       // example user-written workingDays method
       

      plusの後にminusを呼び出しても、同じ日付/時間が返されることは保証されません。

      定義:
      インタフェースTemporalminus
      パラメータ:
      amount - 減算する量、null以外
      戻り値:
      指定された調整を行った同じ型のオブジェクト、null以外
      例外:
      DateTimeException - 減算ができない場合
      ArithmeticException - 数値のオーバーフローが発生した場合
    • minus

      default ChronoLocalDateTime<D> minus(long amountToSubtract, TemporalUnit unit)
      指定された期間を減算して、このオブジェクトと同じ型のオブジェクトを返します。

      このメソッドは、指定された期間を減算して、このオブジェクトに基づいて新しいオブジェクトを返します。 たとえば、LocalDateで、これは年、月、または日の数を減算するために使用できます。 返されるオブジェクトはこのオブジェクトと同じ識別可能な型を持ちます。

      フィールドの変更が完全には定義されていない場合もあります。 たとえば、ターゲットオブジェクトが3月31日を表す日付である場合、1か月を減算することは不明な場合があります。 このようなケースでは、フィールドは結果の解決を担当します。 通常は1つ前の有効な日付が選択され、この例の場合は2月の最後の有効な日になります。

      定義:
      インタフェースTemporalminus
      パラメータ:
      amountToSubtract - 減算する指定された単位の量、負の場合もある
      unit - 減算する量の単位、nullでない
      戻り値:
      指定された期間が減算された同じ型のオブジェクト、null以外
      例外:
      DateTimeException - 単位を減算できない場合
      ArithmeticException - 数値のオーバーフローが発生した場合
    • query

      default <R> R query(TemporalQuery<R> query)
      指定された問合せを使用してこの日付/時間を問い合わせます。

      これは指定された問合せ方法オブジェクトを使用してこの日付/時間を問い合わせます。 TemporalQueryオブジェクトは結果を取得するために使用するロジックを定義します。 このメソッドの結果を理解するには、問合せのドキュメントをお読みください。

      このメソッドの結果は、thisを引数として渡して、指定した問合せでTemporalQuery.queryFrom(TemporalAccessor)メソッドを呼び出すことによって取得します。

      定義:
      インタフェースTemporalAccessorquery
      型パラメータ:
      R - 結果の型
      パラメータ:
      query - 呼び出す問合せ、null以外
      戻り値:
      問合せ結果、nullが返されることがある(問合せによって定義される)
      例外:
      DateTimeException - 問い合わせできない場合(問合せによって定義される)
      ArithmeticException - 数値のオーバーフローが発生した場合(問合せによって定義される)
    • adjustInto

      default Temporal adjustInto(Temporal temporal)
      指定された時間的オブジェクトをこのオブジェクトと同じ日付と時間になるように調整します。

      これは、日時をこれと同じになるように変更して、入力と同じ識別可能な型の時間的オブジェクトを返します。

      調整は、ChronoField.EPOCH_DAYChronoField.NANO_OF_DAYをフィールドとして渡して、Temporal.with(TemporalField, long)を2回使用する場合と同等です。

      ほとんどのケースで、Temporal.with(TemporalAdjuster)を使用して、呼び出しパターンを逆にすると明確になります。

         // these two lines are equivalent, but the second approach is recommended
         temporal = thisLocalDateTime.adjustInto(temporal);
         temporal = temporal.with(thisLocalDateTime);
       

      このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。

      定義:
      インタフェースTemporalAdjusteradjustInto
      パラメータ:
      temporal - 調整するターゲット・オブジェクト、null以外
      戻り値:
      調整されるオブジェクト、null以外
      例外:
      DateTimeException - 調整を実行できない場合
      ArithmeticException - 数値のオーバーフローが発生した場合
    • format

      default String format(DateTimeFormatter formatter)
      指定されたフォーマッタを使用してこの日付/時間を書式設定します。

      この日付/時間はフォーマッタに渡され、文字列が生成されます。

      デフォルトの実装は次のように動作する必要があります。

        return formatter.format(this);
       

      パラメータ:
      formatter - 使用するフォーマッタ、null以外
      戻り値:
      書式設定済の日付/時間文字列、null以外
      例外:
      DateTimeException - 出力時にエラーが発生した場合
    • atZone

      ChronoZonedDateTime<D> atZone(ZoneId zone)
      この時間をタイムゾーンと組み合わせて、ChronoZonedDateTimeを作成します。

      これは、指定されたタイムゾーンでこの日付/時間から形成されたChronoZonedDateTimeを返します。 結果はこの日付/時間に可能な限り近くに一致します。 夏時間などのタイムゾーンのルールでは、指定されたゾーンで、すべてのローカル日付/時間が有効であるとは限らないことを意味するため、ローカル日付/時間が調整されることがあります。

      ローカル日付/時間は時系列上の単一のインスタントに解決されます。 これは、ゾーンIDのrulesによって定義されているとおりに、ローカル日付/時間のUTC/グリニッジ標準時からの有効なオフセットを見つけることによって、実現されます。

      ほとんどの場合に、ローカル日付/時間の有効なオフセットは1つだけです。 重複がある場合、クロックが設定し直され、2つの有効なオフセットが存在します。 このメソッドは、一般に「夏」に対応する早い方のオフセットを使用します。

      ギャップがある場合、クロックは前方にジャンプし、有効なオフセットが存在しません。 代わりに、ローカル日付/時間がギャップの長さだけ後ろに調整されます。 一般的な1時間の夏時間の変更では、ローカル日付/時間が、一般に「夏」に対応するオフセットの中の1時間後方に移動されます。

      重複時の後方のオフセットを取得するには、このメソッドの結果でChronoZonedDateTime.withLaterOffsetAtOverlap()を呼び出します。

      パラメータ:
      zone - 使用するタイムゾーン、null以外
      戻り値:
      この日付/時間から形成されたゾーン付きの日付/時間、null以外
    • toInstant

      default Instant toInstant(ZoneOffset offset)
      この日付/時間をInstantに変換します。

      これは、ローカル日付/時間と指定されたオフセットを組み合わせて、Instantを形成します。

      このデフォルトの実装は日付のエポック日と時間の日の秒から計算します。

      パラメータ:
      offset - 変換に使用するオフセット、null以外
      戻り値:
      同じインスタントを表すInstant、null以外
    • toEpochSecond

      default long toEpochSecond(ZoneOffset offset)
      この日付/時間を、エポック(1970-01-01T00:00:00Z)からの秒数に変換します。

      これは、このローカル日付/時間と指定されたオフセットを組み合わせて、1970-01-01T00:00:00Zから経過した秒数であるエポック秒の値を計算します。 エポックより後の時系列上のインスタントは正で、それより前は負になります。

      このデフォルトの実装は日付のエポック日と時間の日の秒から計算します。

      パラメータ:
      offset - 変換に使用するオフセット、null以外
      戻り値:
      1970-01-01T00:00:00Zのエポックからの秒数
    • compareTo

      default int compareTo(ChronoLocalDateTime<?> other)
      暦を含めて、この日付/時間を別の日付/時間と比較します。

      比較は、まず基礎となる時系列の日付/時間に基づき、次に暦に基づきます。 Comparableに定義されているとおりに、「equalsと一致」しています。

      たとえば、以下はコンパレータの順序です。

      1. 2012-12-03T12:00 (ISO)
      2. 2012-12-04T12:00 (ISO)
      3. 2555-12-04T12:00 (ThaiBuddhist)
      4. 2012-12-05T12:00 (ISO)
      2番と3番の値は時系列で同じ日付/時間を表します。 2つの値が同じ日付/時間を表す場合、それらを識別するために、暦IDが比較されます。 このステップは、順序を「equalsと一致」させるために必要です。

      比較対象のすべての日付/時間オブジェクトが同じ暦にある場合、追加の暦ステージは必要なく、ローカル日付/時間のみが使用されます。

      このデフォルトの実装は、上で定義されている比較を実行します。

      定義:
      インタフェースComparable<D extends ChronoLocalDate>内のcompareTo
      パラメータ:
      other - 他の比較する日付/時間、null以外
      戻り値:
      比較値(このローカル日時とotherローカル日時およびこの時系列とother時系列との比較)は、最初の0以外の結果を返し、それ以外の場合は0を返します
      関連項目:
    • isAfter

      default boolean isAfter(ChronoLocalDateTime<?> other)
      暦を無視して、この日付/時間が、指定された日付/時間の後であるかどうかをチェックします。

      このメソッドは、基礎となる日付/時間のみを比較し、暦を比較しない点で、compareTo(java.time.chrono.ChronoLocalDateTime<?>)での比較と異なります。 これにより、異なる暦体系の日付を、時系列の位置に基づいて比較できます。

      このデフォルトの実装は、エポック日と日のナノ秒に基づいて比較を実行します。

      パラメータ:
      other - 他の比較する日付/時間、null以外
      戻り値:
      これが、指定された日付/時間より後である場合はtrue
    • isBefore

      default boolean isBefore(ChronoLocalDateTime<?> other)
      暦を無視して、この日付/時間が、指定された日付/時間の前であるかどうかをチェックします。

      このメソッドは、基礎となる日付/時間のみを比較し、暦を比較しない点で、compareTo(java.time.chrono.ChronoLocalDateTime<?>)での比較と異なります。 これにより、異なる暦体系の日付を、時系列の位置に基づいて比較できます。

      このデフォルトの実装は、エポック日と日のナノ秒に基づいて比較を実行します。

      パラメータ:
      other - 他の比較する日付/時間、null以外
      戻り値:
      これが、指定された日付/時間より前である場合はtrue
    • isEqual

      default boolean isEqual(ChronoLocalDateTime<?> other)
      暦を無視して、この日付/時間が、指定された日付/時間と等しいかどうかをチェックします。

      このメソッドは、基礎となる日付と時間のみを比較し、暦を比較しない点で、compareTo(java.time.chrono.ChronoLocalDateTime<?>)での比較と異なります。 これにより、異なる暦体系の日付/時間を、時系列の位置に基づいて比較できます。

      このデフォルトの実装は、エポック日と日のナノ秒に基づいて比較を実行します。

      パラメータ:
      other - 他の比較する日付/時間、null以外
      戻り値:
      基礎となる日付/時間が、時系列の指定された日付/時間と等しいかどうかをチェックします。
    • equals

      boolean equals(Object obj)
      暦を含めて、この日付/時間が別の日付/時間と等しいかどうかをチェックします。

      この日付/時間を別の日付/時間と比較して、日付/時間と暦が同じであることを確認します。

      オーバーライド:
      equals、クラスObject
      パラメータ:
      obj - チェックするオブジェクト、nullはfalseを返す
      戻り値:
      これが他方の日付と等しい場合はtrue
      関連項目:
    • hashCode

      int hashCode()
      この日付/時間のハッシュ・コード。
      オーバーライド:
      hashCode、クラスObject
      戻り値:
      適切なハッシュ・コード
      関連項目:
    • toString

      String toString()
      この日付/時間をStringとして出力します。

      出力には、完全なローカル日付/時間が含まれます。

      オーバーライド:
      toString、クラスObject
      戻り値:
      この日付/時間の文字列表現、null以外