Метод queryFrom

Статический метод queryFrom класса TemporalQueries выполняет запрос к объекту, реализующему интерфейс TemporalAccessor, для извлечения определенной информации с помощью переданного запроса. В первый параметр мы передаем объект запроса, реализующий интерфейс TemporalQuery, во второй параметр передаем временной объект, к которому применяется запрос.

Импорт

kotlinimport java.time.temporal.TemporalQueries
import java.time.temporal.TemporalQuery
import java.time.temporal.TemporalAccessor

Синтаксис

kotlinstatic <R> R queryFrom(TemporalQuery<R> query, TemporalAccessor temporal)

Пример

Получим часовой пояс из объекта ZonedDateTime с помощью запроса zoneId:

kotlinimport java.time.ZonedDateTime
import java.time.ZoneId
import java.time.temporal.TemporalQueries

val zonedDateTime = ZonedDateTime.now()
val zoneQuery = TemporalQueries.zoneId()
val zone = TemporalQueries.queryFrom(zoneQuery, zonedDateTime)
println(zone)

Результат выполнения кода:

kotlinString "Europe/Moscow"

Пример

Получим точность временного объекта с помощью запроса precision:

kotlinimport java.time.LocalTime
import java.time.temporal.TemporalQueries
import java.time.temporal.ChronoUnit

val localTime = LocalTime.now()
val precisionQuery = TemporalQueries.precision()
val precision = TemporalQueries.queryFrom(precisionQuery, localTime)
println(precision)

Результат выполнения кода:

kotlinString "NANOS"

Пример

Получим локальную дату из объекта ZonedDateTime с помощью запроса localDate:

kotlinimport java.time.ZonedDateTime
import java.time.LocalDate
import java.time.temporal.TemporalQueries

val zonedDateTime = ZonedDateTime.parse("2025-07-15T10:30:45+03:00[Europe/Moscow]")
val localDateQuery = TemporalQueries.localDate()
val localDate = TemporalQueries.queryFrom(localDateQuery, zonedDateTime)
println(localDate)

Результат выполнения кода:

kotlinString "2025-07-15"

Пример

Проверим поддержку часового пояса для объекта LocalDateTime:

kotlinimport java.time.LocalDateTime
import java.time.temporal.TemporalQueries

val localDateTime = LocalDateTime.now()
val zoneQuery = TemporalQueries.zone()
val zone = TemporalQueries.queryFrom(zoneQuery, localDateTime)
println(zone)

Результат выполнения кода:

kotlinnull

Смотрите также

  • метод zoneId класса TemporalQueries,
    который возвращает запрос для получения часового пояса
  • метод localDate класса TemporalQueries,
    который возвращает запрос для получения локальной даты
  • метод localTime класса TemporalQueries,
    который возвращает запрос для получения локального времени