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::fromやZoneId::fromなどのメソッド参照です。 さらに、次を返す共通の問合せも提供されます。
| 修飾子と型 | メソッド | 説明 |
|---|---|---|
static TemporalQuery<Chronology> |
chronology() |
Chronologyの問合せ。 |
static TemporalQuery<LocalDate> |
localDate() |
見つからない場合はnullを返す、
LocalDateの問合せ。 |
static TemporalQuery<LocalTime> |
localTime() |
見つからない場合はnullを返す、
LocalTimeの問合せ。 |
static TemporalQuery<ZoneOffset> |
offset() |
ZoneOffsetの問合せ。見つからない場合はnullを返します。 |
static TemporalQuery<TemporalUnit> |
precision() |
サポートされる最小単位の問合せ。
|
static TemporalQuery<ZoneId> |
zone() |
ZoneOffsetにフォール・バックする、ZoneIdの厳密でないクエリーです。 |
static TemporalQuery<ZoneId> |
zoneId() |
ZoneIdの厳密な問合せ。 |
public static TemporalQuery<ZoneId> zoneId()
ZoneIdの厳密な問合せ。
これは、ゾーンのTemporalAccessorを問い合せます。 ゾーンが返されるのは、日付/時間に概念としてZoneIdが含まれる場合のみです。 日付/時間に概念としてZoneOffsetのみが含まれる場合は、返されません。 したがって、ZonedDateTimeはgetZone()の結果を返しますが、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を返す
public static TemporalQuery<Chronology> chronology()
Chronologyの問合せ。
これは、暦のTemporalAccessorを問い合せます。 ターゲットのTemporalAccessorが日付または日付の一部を表す場合、これは日付の表現に使用されている暦を返す必要があります。 この定義の結果、時間のみを表すオブジェクト(LocalTimeなど)はnullを返します。
TemporalAccessorを実装したJDKクラスの結果は次のようになります。LocalDateはIsoChronology.INSTANCEを返すLocalTimeはnullを返す(日付を表さない)LocalDateTimeはIsoChronology.INSTANCEを返すZonedDateTimeはIsoChronology.INSTANCEを返すOffsetTimeはnullを返す(日付を表さない)OffsetDateTimeはIsoChronology.INSTANCEを返すChronoLocalDateは関連付けられた暦を返すChronoLocalDateTimeは関連付けられた暦を返すChronoZonedDateTimeは関連付けられた暦を返すEraは関連付けられた暦を返すDayOfWeekはnullを返す(複数の暦で共有される)MonthはIsoChronology.INSTANCEを返すYearはIsoChronology.INSTANCEを返すYearMonthはIsoChronology.INSTANCEを返すMonthDayはnullのIsoChronology.INSTANCEを返すZoneOffsetはnullを返す(日付を表さない)Instantはnullを返す(日付を表さない)
Chronology.from(TemporalAccessor)メソッドは、メソッド参照(Chronology::from)を介してTemporalQueryとして使用できます。 そのメソッドはこの問合せと同等ですが、暦を取得できない場合に例外をスローする点が異なります。
public static TemporalQuery<TemporalUnit> precision()
これは、時間の精度のTemporalAccessorを問い合せます。 ターゲットのTemporalAccessorが一貫した、または完全な日付/時間、日付または時間を表す場合、これは実際にサポートされている最小精度を返す必要があります。 NANO_OF_DAYやNANO_OF_SECONDなどのフィールドは常に精度を無視して返すように定義されているため、これは実際にサポートされている最小単位を見つける唯一の方法です。 たとえば、GregorianCalendarにTemporalAccessorを実装すると、精度としてMILLISが返されます。
TemporalAccessorを実装したJDKクラスの結果は次のようになります。LocalDateはDAYSを返すLocalTimeはNANOSを返すLocalDateTimeはNANOSを返すZonedDateTimeはNANOSを返すOffsetTimeはNANOSを返すOffsetDateTimeはNANOSを返すChronoLocalDateはDAYSを返すChronoLocalDateTimeはNANOSを返すChronoZonedDateTimeはNANOSを返すEraはERASを返すDayOfWeekはDAYSを返すMonthはMONTHSを返すYearはYEARSを返すYearMonthはMONTHSを返すMonthDayはnullを返す(完全な日付または時間を表さない)ZoneOffsetはnullを返す(日付または時間を表さない)InstantはNANOSを返す
public static TemporalQuery<ZoneId> zone()
ZoneOffsetにフォール・バックする、ZoneIdの厳密でないクエリーです。
これは、ゾーンのTemporalAccessorを問い合せます。 最初にzoneId()を使用してゾーンを取得しようとします。 それが見つからない場合は、offset()を取得しようとします。 したがって、ZonedDateTimeはgetZone()の結果を返しますが、OffsetDateTimeはgetOffset()の結果を返します。
ほとんどの場合、アプリケーションでは#zoneId()ではなくこの問合せを使用するようにしてください。
ZoneId.from(TemporalAccessor)メソッドは、メソッド参照(ZoneId::from)を介してTemporalQueryとして使用できます。 そのメソッドはこの問合せと同等ですが、ゾーンを取得できない場合に例外をスローする点が異なります。
public static TemporalQuery<ZoneOffset> offset()
ZoneOffsetの問合せ。見つからない場合はnullを返します。
これは、オフセットの時間的オブジェクトを問い合せるために使用できるTemporalQueryを返します。 時間的オブジェクトがオフセットを提供できない場合、問合せはnullを返します。
問合せの実装は、OFFSET_SECONDSフィールドを調べ、それを使用してZoneOffsetを作成します。
ZoneOffset.from(TemporalAccessor)メソッドは、メソッド参照(ZoneOffset::from)を介してTemporalQueryとして使用できます。 時間的オブジェクトにオフセットが含まれている場合、この問合せとZoneOffset::fromは同じ結果を返します。 時間的オブジェクトにオフセットが含まれていない場合、メソッド参照は例外をスローしますが、この問合せはnullを返します。
public static TemporalQuery<LocalDate> localDate()
LocalDateの問合せ。
これは、ローカル日付の時間的オブジェクトを問い合せるために使用できるTemporalQueryを返します。 時間的オブジェクトがローカル日付を提供できない場合、問合せはnullを返します。
問合せの実装は、EPOCH_DAYフィールドを調べ、それを使用してLocalDateを作成します。
ZoneOffset.from(TemporalAccessor)メソッドは、メソッド参照(LocalDate::from)を介してTemporalQueryとして使用できます。 時間的オブジェクトに日付が含まれている場合、この問合せとLocalDate::fromは同じ結果を返します。 時間的オブジェクトに日付が含まれていない場合、メソッド参照は例外をスローしますが、この問合せはnullを返します。
public static TemporalQuery<LocalTime> localTime()
LocalTimeの問合せ。
これは、ローカル時間の時間的オブジェクトを問い合せるために使用できるTemporalQueryを返します。 時間的オブジェクトがローカル時間を提供できない場合、問合せはnullを返します。
問合せの実装は、NANO_OF_DAYフィールドを調べ、それを使用してLocalTimeを作成します。
ZoneOffset.from(TemporalAccessor)メソッドは、メソッド参照(LocalTime::from)を介してTemporalQueryとして使用できます。 時間的オブジェクトに時間が含まれている場合、この問合せとLocalTime::fromは同じ結果を返します。 時間的オブジェクトに時間が含まれていない場合、メソッド参照は例外をスローしますが、この問合せはnullを返します。
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。