クラスTemporalQueries

java.lang.Object
java.time.temporal.TemporalQueries

public final class TemporalQueries extends Object
TemporalQueryの一般的な実装です。

このクラスは、TemporalQueryの一般的な実装を提供します。 これらは定数である必要がありますが、ラムダの定義ではそれが保証されないため、ここで定義されます。 これらは、ここで1度割り当てることによって通常のJava定数になります。

問合せは、時間的オブジェクトから情報を抽出するための主要なツールです。 それらは、戦略デザイン・パターンのように、問合せのプロセスを外部化して異なるアプローチを可能にするために存在します。 例として、日付がうるう年の2月29日の前日かどうかを確認する問合せや、次の誕生日までの日数を計算する問合せなどがあります。

TemporalFieldインタフェースは、時間的オブジェクトを問い合せるもう1つのメカニズムを提供します。 そのインタフェースは、longを返すように制限されています。 これに対して、問合せは任意の型を返すことができます。

TemporalQueryには、2つの同等な使用方法があります。 1つ目は、このインタフェース上でメソッドを直接呼び出す方法です。 2つ目は、TemporalAccessor.query(TemporalQuery)を使用する方法です。

  // these two lines are equivalent, but the second approach is recommended
  temporal = thisQuery.queryFrom(temporal);
  temporal = temporal.query(thisQuery);
コード内での読みやすさが大幅に向上するため、2つ目のアプローチ(query(TemporalQuery))を使用することをお薦めします。

もっとも一般的な実装は、LocalDate::fromZoneId::fromなどのメソッド参照です。 さらに、次を返す共通の問合せも提供されます。

  • Chronology
  • LocalDate
  • LocalTime
  • ZoneOffset
  • 精度
  • ゾーン
  • zoneId

導入されたバージョン:
1.8
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    Chronologyの問合せ。
    見つからない場合はnullを返す、LocalDateの問合せ。
    見つからない場合はnullを返す、LocalTimeの問合せ。
    ZoneOffsetの問合せ。見つからない場合はnullを返します。
    サポートされる最小単位の問合せ。
    ZoneOffsetにフォール・バックする、ZoneIdの厳密でないクエリーです。
    ZoneIdの厳密な問合せ。

    クラスオブジェクトで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    修飾子と型
    メソッド
    説明
    protected Object
    このオブジェクトのコピーを作成して、返します。
    boolean
    このオブジェクトと他のオブジェクトが等しいかどうかを示します。
    protected void
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    最終決定は非推奨であり、将来のリリースで削除される可能性があります。
    final Class<?>
    このObjectの実行時クラスを返します。
    int
    このオブジェクトに対するハッシュ・コード値を返します。
    final void
    このオブジェクトのモニターで待機中のスレッドを1つ再開します。
    final void
    このオブジェクトのモニターで待機中のすべてのスレッドを再開します。
    オブジェクトの文字列表現を返します。
    final void
    現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。
    final void
    wait(long timeoutMillis)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
    final void
    wait(long timeoutMillis, int nanos)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
  • メソッドの詳細

    • zoneId

      public static TemporalQuery<ZoneId> zoneId()
      ZoneIdの厳密な問合せ。

      これは、ゾーンのTemporalAccessorを問い合せます。 ゾーンが返されるのは、日付/時間に概念としてZoneIdが含まれる場合のみです。 日付/時間に概念としてZoneOffsetのみが含まれる場合は、返されません。 したがって、ZonedDateTimegetZone()の結果を返しますが、OffsetDateTimeはnullを返します。

      ほとんどの場合、この問合せは厳密すぎるため、アプリケーションではzone()を使用するようにしてください。

      TemporalAccessorを実装したJDKクラスの結果は次のようになります。
      LocalDateはnullを返す
      LocalTimeはnullを返す
      LocalDateTimeはnullを返す
      ZonedDateTimeは関連付けられたゾーンを返す
      OffsetTimeはnullを返す
      OffsetDateTimeはnullを返す
      ChronoLocalDateはnullを返す
      ChronoLocalDateTimeはnullを返す
      ChronoZonedDateTimeは関連付けられたゾーンを返す
      Eraはnullを返す
      DayOfWeekはnullを返す
      Monthはnullを返す
      Yearはnullを返す
      YearMonthはnullを返す
      MonthDayはnullを返す
      ZoneOffsetはnullを返す
      Instantはnullを返す

      戻り値:
      時間的オブジェクトのゾーンIDを取得できる問合せ、nullでない
    • chronology

      public static TemporalQuery<Chronology> chronology()
      Chronologyの問合せ。

      これは、暦のTemporalAccessorを問い合せます。 ターゲットのTemporalAccessorが日付または日付の一部を表す場合、これは日付の表現に使用されている暦を返す必要があります。 この定義の結果、時間のみを表すオブジェクト(LocalTimeなど)はnullを返します。

      TemporalAccessorを実装したJDKクラスの結果は次のようになります。
      LocalDateIsoChronology.INSTANCEを返す
      LocalTimeはnullを返す(日付を表さない)
      LocalDateTimeIsoChronology.INSTANCEを返す
      ZonedDateTimeIsoChronology.INSTANCEを返す
      OffsetTimeはnullを返す(日付を表さない)
      OffsetDateTimeIsoChronology.INSTANCEを返す
      ChronoLocalDateは関連付けられた暦を返す
      ChronoLocalDateTimeは関連付けられた暦を返す
      ChronoZonedDateTimeは関連付けられた暦を返す
      Eraは関連付けられた暦を返す
      DayOfWeekはnullを返す(複数の暦で共有される)
      MonthIsoChronology.INSTANCEを返す
      YearIsoChronology.INSTANCEを返す
      YearMonthIsoChronology.INSTANCEを返す
      MonthDayはnullのIsoChronology.INSTANCEを返す
      ZoneOffsetはnullを返す(日付を表さない)
      Instantはnullを返す(日付を表さない)

      Chronology.from(TemporalAccessor)メソッドは、メソッド参照(Chronology::from)を介してTemporalQueryとして使用できます。 そのメソッドはこの問合せと同等ですが、暦を取得できない場合に例外をスローする点が異なります。

      戻り値:
      時間的オブジェクトの暦を取得できる問合せ、nullでない
    • precision

      public static TemporalQuery<TemporalUnit> precision()
      サポートされる最小単位の問合せ。

      これは、時間の精度のTemporalAccessorを問い合せます。 ターゲットのTemporalAccessorが一貫した、または完全な日付/時間、日付または時間を表す場合、これは実際にサポートされている最小精度を返す必要があります。 NANO_OF_DAYNANO_OF_SECONDなどのフィールドは常に精度を無視して返すように定義されているため、これは実際にサポートされている最小単位を見つける唯一の方法です。 たとえば、GregorianCalendarTemporalAccessorを実装すると、精度としてMILLISが返されます。

      TemporalAccessorを実装したJDKクラスの結果は次のようになります。
      LocalDateDAYSを返す
      LocalTimeNANOSを返す
      LocalDateTimeNANOSを返す
      ZonedDateTimeNANOSを返す
      OffsetTimeNANOSを返す
      OffsetDateTimeNANOSを返す
      ChronoLocalDateDAYSを返す
      ChronoLocalDateTimeNANOSを返す
      ChronoZonedDateTimeNANOSを返す
      EraERASを返す
      DayOfWeekDAYSを返す
      MonthMONTHSを返す
      YearYEARSを返す
      YearMonthMONTHSを返す
      MonthDayはnullを返す(完全な日付または時間を表さない)
      ZoneOffsetはnullを返す(日付または時間を表さない)
      InstantNANOSを返す

      戻り値:
      時間的オブジェクトの精度を取得できる問合せ、nullでない
    • zone

      public static TemporalQuery<ZoneId> zone()
      ZoneOffsetにフォール・バックする、ZoneIdの厳密でないクエリーです。

      これは、ゾーンのTemporalAccessorを問い合せます。 最初にzoneId()を使用してゾーンを取得しようとします。 それが見つからない場合は、offset()を取得しようとします。 したがって、ZonedDateTimegetZone()の結果を返しますが、OffsetDateTimegetOffset()の結果を返します。

      ほとんどの場合、アプリケーションでは#zoneId()ではなくこの問合せを使用するようにしてください。

      ZoneId.from(TemporalAccessor)メソッドは、メソッド参照(ZoneId::from)を介してTemporalQueryとして使用できます。 そのメソッドはこの問合せと同等ですが、ゾーンを取得できない場合に例外をスローする点が異なります。

      戻り値:
      時間的オブジェクトのゾーンIDまたはオフセットを取得できる問合せ、nullでない
    • offset

      public static TemporalQuery<ZoneOffset> offset()
      ZoneOffsetの問合せ。見つからない場合はnullを返します。

      これは、オフセットの時間的オブジェクトを問い合せるために使用できるTemporalQueryを返します。 時間的オブジェクトがオフセットを提供できない場合、問合せはnullを返します。

      問合せの実装は、OFFSET_SECONDSフィールドを調べ、それを使用してZoneOffsetを作成します。

      ZoneOffset.from(TemporalAccessor)メソッドは、メソッド参照(ZoneOffset::from)を介してTemporalQueryとして使用できます。 時間的オブジェクトにオフセットが含まれている場合、この問合せとZoneOffset::fromは同じ結果を返します。 時間的オブジェクトにオフセットが含まれていない場合、メソッド参照は例外をスローしますが、この問合せはnullを返します。

      戻り値:
      時間的オブジェクトのオフセットを取得できる問合せ、nullでない
    • localDate

      public static TemporalQuery<LocalDate> localDate()
      見つからない場合はnullを返す、LocalDateの問合せ。

      これは、ローカル日付の時間的オブジェクトを問い合せるために使用できるTemporalQueryを返します。 時間的オブジェクトがローカル日付を提供できない場合、問合せはnullを返します。

      問合せの実装は、EPOCH_DAYフィールドを調べ、それを使用してLocalDateを作成します。

      メソッドLocalDate.from(TemporalAccessor)は、メソッド参照LocalDate::fromを介してTemporalQueryとして使用できます。 時間的オブジェクトに日付が含まれている場合、この問合せとLocalDate::fromは同じ結果を返します。 時間的オブジェクトに日付が含まれていない場合、メソッド参照は例外をスローしますが、この問合せはnullを返します。

      戻り値:
      時間的オブジェクトの日付を取得できる問合せ、nullでない
    • localTime

      public static TemporalQuery<LocalTime> localTime()
      見つからない場合はnullを返す、LocalTimeの問合せ。

      これは、ローカル時間の時間的オブジェクトを問い合せるために使用できるTemporalQueryを返します。 時間的オブジェクトがローカル時間を提供できない場合、問合せはnullを返します。

      問合せの実装は、NANO_OF_DAYフィールドを調べ、それを使用してLocalTimeを作成します。

      メソッドLocalTime.from(TemporalAccessor)は、メソッド参照LocalTime::fromを介してTemporalQueryとして使用できます。 時間的オブジェクトに時間が含まれている場合、この問合せとLocalTime::fromは同じ結果を返します。 時間的オブジェクトに時間が含まれていない場合、メソッド参照は例外をスローしますが、この問合せはnullを返します。

      戻り値:
      時間的オブジェクトの時間を取得できる問合せ、nullでない