Класс TemporalQueries
public final class TemporalQueries extends Object
TemporalQuery. Этот класс предоставляет распространённые реализации TemporalQuery. Они определены здесь, поскольку должны быть константами, а определение лямбда-выражений этого не гарантирует. После однократного присваивания здесь они становятся обычными константами Java.
Запросы — важный инструмент для извлечения информации из объектов даты и времени. Они позволяют вынести процесс запроса наружу и использовать различные подходы в соответствии с шаблоном проектирования «Стратегия». Например, запрос может проверять, является ли дата днём перед 29 февраля високосного года, или вычислять количество дней до вашего следующего дня рождения.
Интерфейс TemporalField предоставляет другой механизм запросов к объектам даты и времени. Этот интерфейс ограничен возвратом значения long. В отличие от него, запросы могут возвращать значения любого типа.
Существует два эквивалентных способа использования TemporalQuery. Первый — вызвать метод непосредственно у этого интерфейса. Второй — использовать TemporalAccessor.query(TemporalQuery):
// these two lines are equivalent, but the second approach is recommended result = thisQuery.queryFrom(temporal); result = temporal.query(thisQuery);Рекомендуется использовать второй подход,
query(thisQuery), поскольку в коде его гораздо легче читать. Наиболее распространёнными реализациями являются ссылки на методы, такие как LocalDate::from и ZoneId::from. Дополнительные распространённые запросы предоставляют:
- хронологию,
- LocalDate,
- LocalTime,
- ZoneOffset,
- точность,
- зону или
- zoneId.
- С момента:
- 1.8
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static TemporalQuery |
chronology() |
Запрос для Chronology. |
static TemporalQuery |
localDate() |
Запрос для LocalDate, возвращающий null, если значение не найдено. |
static TemporalQuery |
localTime() |
Запрос для LocalTime, возвращающий null, если значение не найдено. |
static TemporalQuery |
offset() |
Запрос для ZoneOffset, возвращающий null, если значение не найдено. |
static TemporalQuery |
precision() |
Запрос для наименьшей поддерживаемой единицы. |
static TemporalQuery |
zone() |
Нестрогий запрос для ZoneId с возвратом ZoneOffset в качестве запасного варианта. |
static TemporalQuery |
zoneId() |
Строгий запрос для ZoneId. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Указывает, является ли другой объект «равным» этому. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии. Финализация объявлена устаревшей и может быть удалена в одном из следующих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Приостанавливает текущий поток до его пробуждения, обычно посредством вызова notify или interrupt. |
final void |
wait |
Приостанавливает текущий поток до его пробуждения, обычно посредством вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Приостанавливает текущий поток до его пробуждения, обычно посредством вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
Подробное описание методов
zoneId
public static TemporalQuery<ZoneId> zoneId()
ZoneId. Выполняет запрос к TemporalAccessor для получения зоны. Зона возвращается только в том случае, если объект даты и времени концептуально содержит ZoneId. Она не возвращается, если объект даты и времени концептуально содержит только ZoneOffset. Таким образом, ZonedDateTime вернёт результат getZone(), а OffsetDateTime вернёт null.
В большинстве случаев приложениям следует использовать zone(), поскольку этот запрос слишком строгий.
Результаты для классов JDK, реализующих TemporalAccessor, следующие:
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
- Возвращает:
- запрос, позволяющий получить идентификатор зоны объекта даты и времени; не null
chronology
public static TemporalQuery<Chronology> chronology()
Chronology. Выполняет запрос к TemporalAccessor для получения хронологии. Если целевой TemporalAccessor представляет дату или её часть, он должен возвращать хронологию, в которой выражена дата. В соответствии с этим определением объекты, представляющие только время, например LocalTime, вернут null.
Результаты для классов JDK, реализующих TemporalAccessor, следующие:
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) можно использовать как TemporalQuery с помощью ссылки на метод, Chronology::from. Этот метод эквивалентен данному запросу, за исключением того, что он выбрасывает исключение, если хронологию не удаётся получить.
- Возвращает:
- запрос, позволяющий получить хронологию объекта даты и времени; не null
precision
public static TemporalQuery<TemporalUnit> precision()
Выполняет запрос к TemporalAccessor для получения точности времени. Если целевой TemporalAccessor представляет согласованную или полную дату и время, дату либо время, он должен возвращать наименьшую фактически поддерживаемую точность. Обратите внимание, что такие поля, как NANO_OF_DAY и NANO_OF_SECOND, по определению всегда возвращают значение независимо от точности, поэтому это единственный способ определить фактически наименьшую поддерживаемую единицу. Например, если бы GregorianCalendar реализовывал TemporalAccessor, он возвращал бы точность MILLIS.
Результаты для классов JDK, реализующих TemporalAccessor, следующие:
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()
ZoneId с возвратом ZoneOffset в качестве запасного варианта. Выполняет запрос к TemporalAccessor для получения зоны. Сначала предпринимается попытка получить зону с помощью zoneId(). Если она не найдена, предпринимается попытка получить offset(). Таким образом, ZonedDateTime вернёт результат getZone(), а OffsetDateTime — результат getOffset().
В большинстве случаев приложениям следует использовать этот запрос, а не #zoneId().
Метод ZoneId.from(TemporalAccessor) можно использовать как TemporalQuery с помощью ссылки на метод, ZoneId::from. Этот метод эквивалентен данному запросу, за исключением того, что он выбрасывает исключение, если зону не удаётся получить.
- Возвращает:
- запрос, позволяющий получить идентификатор зоны или смещение объекта даты и времени; не null
offset
public static TemporalQuery<ZoneOffset> offset()
ZoneOffset, возвращающий null, если значение не найдено. Возвращает TemporalQuery, который можно использовать для запроса смещения у объекта даты и времени. Запрос вернёт null, если объект даты и времени не может предоставить смещение.
Реализация запроса проверяет поле OFFSET_SECONDS и использует его для создания ZoneOffset.
Метод ZoneOffset.from(TemporalAccessor) можно использовать как TemporalQuery с помощью ссылки на метод, ZoneOffset::from. Этот запрос и ZoneOffset::from возвращают одинаковый результат, если объект даты и времени содержит смещение. Если объект даты и времени не содержит смещение, ссылка на метод выбросит исключение, тогда как этот запрос вернёт null.
- Возвращает:
- запрос, позволяющий получить смещение объекта даты и времени; не null
localDate
public static TemporalQuery<LocalDate> localDate()
LocalDate, возвращающий null, если значение не найдено. Возвращает TemporalQuery, который можно использовать для запроса локальной даты у объекта даты и времени. Запрос вернёт null, если объект даты и времени не может предоставить локальную дату.
Реализация запроса проверяет поле EPOCH_DAY и использует его для создания LocalDate.
Метод LocalDate.from(TemporalAccessor) можно использовать как TemporalQuery с помощью ссылки на метод, LocalDate::from. Этот запрос и LocalDate::from возвращают одинаковый результат, если объект даты и времени содержит дату. Если объект даты и времени не содержит дату, ссылка на метод выбросит исключение, тогда как этот запрос вернёт null.
- Возвращает:
- запрос, позволяющий получить дату объекта даты и времени; не null
localTime
public static TemporalQuery<LocalTime> localTime()
LocalTime, возвращающий null, если значение не найдено. Возвращает TemporalQuery, который можно использовать для запроса локального времени у объекта даты и времени. Запрос вернёт null, если объект даты и времени не может предоставить локальное время.
Реализация запроса проверяет поле NANO_OF_DAY и использует его для создания LocalTime.
Метод LocalTime.from(TemporalAccessor) можно использовать как TemporalQuery с помощью ссылки на метод, LocalTime::from. Этот запрос и LocalTime::from возвращают одинаковый результат, если объект даты и времени содержит время. Если объект даты и времени не содержит время, ссылка на метод выбросит исключение, тогда как этот запрос вернёт null.
- Возвращает:
- запрос, позволяющий получить время объекта даты и времени; не null
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.