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
などのメソッド参照です。 さらに、次を返す共通の問合せも提供されます。
- Chronology
- LocalDate
- LocalTime
- ZoneOffset
- 精度
- ゾーン
- zoneId
- 導入されたバージョン:
- 1.8
-
メソッドのサマリー
修飾子と型メソッド説明static TemporalQuery<Chronology>
Chronology
の問合せ。static TemporalQuery<LocalDate>
見つからない場合はnullを返す、LocalDate
の問合せ。static TemporalQuery<LocalTime>
見つからない場合はnullを返す、LocalTime
の問合せ。static TemporalQuery<ZoneOffset>
offset()
ZoneOffset
の問合せ。見つからない場合はnullを返します。static TemporalQuery<TemporalUnit>
サポートされる最小単位の問合せ。static TemporalQuery<ZoneId>
zone()
ZoneOffset
にフォール・バックする、ZoneId
の厳密でないクエリーです。static TemporalQuery<ZoneId>
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を返す- 戻り値:
- 時間的オブジェクトのゾーンIDを取得できる問合せ、nullでない
-
chronology
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
として使用できます。 そのメソッドはこの問合せと同等ですが、暦を取得できない場合に例外をスローする点が異なります。- 戻り値:
- 時間的オブジェクトの暦を取得できる問合せ、nullでない
-
precision
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
を返す- 戻り値:
- 時間的オブジェクトの精度を取得できる問合せ、nullでない
-
zone
public static TemporalQuery<ZoneId> zone()ZoneOffset
にフォール・バックする、ZoneId
の厳密でないクエリーです。これは、ゾーンの
TemporalAccessor
を問い合せます。 最初にzoneId()
を使用してゾーンを取得しようとします。 それが見つからない場合は、offset()
を取得しようとします。 したがって、ZonedDateTime
はgetZone()
の結果を返しますが、OffsetDateTime
はgetOffset()
の結果を返します。ほとんどの場合、アプリケーションでは
#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
を作成します。ZoneOffset.from(TemporalAccessor)
メソッドは、メソッド参照(LocalDate::from
)を介してTemporalQuery
として使用できます。 時間的オブジェクトに日付が含まれている場合、この問合せとLocalDate::from
は同じ結果を返します。 時間的オブジェクトに日付が含まれていない場合、メソッド参照は例外をスローしますが、この問合せはnullを返します。- 戻り値:
- 時間的オブジェクトの日付を取得できる問合せ、nullでない
-
localTime
public static TemporalQuery<LocalTime> localTime()見つからない場合はnullを返す、LocalTime
の問合せ。これは、ローカル時間の時間的オブジェクトを問い合せるために使用できる
TemporalQuery
を返します。 時間的オブジェクトがローカル時間を提供できない場合、問合せはnullを返します。問合せの実装は、
NANO_OF_DAY
フィールドを調べ、それを使用してLocalTime
を作成します。ZoneOffset.from(TemporalAccessor)
メソッドは、メソッド参照(LocalTime::from
)を介してTemporalQuery
として使用できます。 時間的オブジェクトに時間が含まれている場合、この問合せとLocalTime::from
は同じ結果を返します。 時間的オブジェクトに時間が含まれていない場合、メソッド参照は例外をスローしますが、この問合せはnullを返します。- 戻り値:
- 時間的オブジェクトの時間を取得できる問合せ、nullでない
-