Статический метод precision

Статический метод precision класса TemporalQueries возвращает запрос, который можно использовать для получения минимальной единицы времени (точности), поддерживаемой временным объектом. Этот метод возвращает объект TemporalQuery, который при применении к временному объекту возвращает объект TemporalUnit, представляющий наименьшую единицу времени, которую может содержать данный объект.

Импорт

kotlinimport java.time.temporal.TemporalQueries
import java.time.temporal.TemporalUnit

Синтаксис

kotlinstatic fun precision(): TemporalQuery<TemporalUnit>

Пример

Получим точность для различных временных объектов:

kotlinimport java.time.LocalDate
import java.time.LocalTime
import java.time.LocalDateTime
import java.time.temporal.TemporalQueries
import java.time.temporal.TemporalUnit

val date = LocalDate.of(2025, 12, 31)
val time = LocalTime.of(14, 30, 45)
val dateTime = LocalDateTime.of(date, time)

val datePrecision = date.query(TemporalQueries.precision())
val timePrecision = time.query(TemporalQueries.precision())
val dateTimePrecision = dateTime.query(TemporalQueries.precision())

println("Date precision: " + datePrecision)
println("Time precision: " + timePrecision)
println("DateTime precision: " + dateTimePrecision)

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

kotlinString "Date precision: Days"
String "Time precision: Nanos"
String "DateTime precision: Nanos"

Пример

Сравним точность разных временных типов:

kotlinimport java.time.Instant
import java.time.ZonedDateTime
import java.time.temporal.TemporalQueries
import java.time.temporal.ChronoUnit

val instant = Instant.now()
val zonedDateTime = ZonedDateTime.now()

val instantPrecision = instant.query(TemporalQueries.precision())
val zonedPrecision = zonedDateTime.query(TemporalQueries.precision())

println("Instant precision: " + instantPrecision)
println("ZonedDateTime precision: " + zonedPrecision)
println("Is instant precision nanoseconds: " + (instantPrecision == ChronoUnit.NANOS))

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

kotlinString "Instant precision: Nanos"
String "ZonedDateTime precision: Nanos"
String "Is instant precision nanoseconds: true"

Пример

Используем полученную точность для проверки поддерживаемых операций:

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

val date = LocalDate.of(2025, 7, 15)
val precision = date.query(TemporalQueries.precision())

if (precision == ChronoUnit.DAYS) {
  println("This temporal object supports day-based operations")
} else {
  println("This temporal object does not support day-based operations")
}

val canAddHours = date.isSupported(ChronoUnit.HOURS)
println("Can add hours: " + canAddHours)

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

kotlinString "This temporal object supports day-based operations"
String "Can add hours: false"

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

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