Класс TemporalField

TemporalField является интерфейсом в Java Time API, который представляет поле даты-времени, такое как год, месяц, день, час, минута и другие. Этот интерфейс определяет методы для доступа к значениям полей из объектов временных типов, таких как LocalDate, LocalTime и LocalDateTime. Основные реализации интерфейса находятся в классе ChronoField.

Импорт

kotlinimport java.time.temporal.TemporalField
import java.time.temporal.ChronoField

Синтаксис

kotlin// Получение значения поля из временного объекта
fun getFrom(temporal: TemporalAccessor): Long

// Проверка поддержки поля временным объектом
fun isSupportedBy(temporal: TemporalAccessor): Boolean

// Получение базовой единицы измерения поля
fun getBaseUnit(): TemporalUnit

// Получение единицы измерения диапазона поля
fun getRangeUnit(): TemporalUnit

// Проверка, является ли поле дато-ориентированным
fun isDateBased(): Boolean

// Проверка, является ли поле время-ориентированным
fun isTimeBased(): Boolean

// Получение диапазона допустимых значений для поля
fun range(): ValueRange

// Получение диапазона значений, уточненного для конкретного временного объекта
fun rangeRefinedBy(temporal: TemporalAccessor): ValueRange

// Проверка корректности значения для поля
fun checkValidValue(value: Long): Long

// Проверка корректности целочисленного значения для поля
fun checkValidIntValue(value: Long): Int

// Получение отображаемого имени поля
fun getDisplayName(locale: Locale): String

// Изменение значения поля в временном объекте
fun adjustInto(temporal: Temporal, newValue: Long): Temporal

Пример

Получим значение поля ChronoField.YEAR из объекта LocalDate:

kotlinimport java.time.LocalDate
import java.time.temporal.ChronoField

val date = LocalDate.of(2025, 12, 31)
val year = date.getLong(ChronoField.YEAR)
println("Year: $year")

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

kotlinString "Year: 2025"

Пример

Проверим, поддерживается ли поле ChronoField.HOUR_OF_DAY в объекте LocalDate:

kotlinimport java.time.LocalDate
import java.time.temporal.ChronoField

val date = LocalDate.of(2025, 12, 31)
val isSupported = ChronoField.HOUR_OF_DAY.isSupportedBy(date)
println("Is HOUR_OF_DAY supported: $isSupported")

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

kotlinString "Is HOUR_OF_DAY supported: false"

Пример

Получим диапазон допустимых значений для поля ChronoField.DAY_OF_MONTH в декабре 2025 года:

kotlinimport java.time.LocalDate
import java.time.temporal.ChronoField

val date = LocalDate.of(2025, 12, 15)
val range = ChronoField.DAY_OF_MONTH.rangeRefinedBy(date)
val min = range.minimum
val max = range.maximum

println("Day of month range: from $min to $max")

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

kotlinString "Day of month range: from 1 to 31"

Пример

Изменим значение поля ChronoField.YEAR в объекте LocalDate:

kotlinimport java.time.LocalDate
import java.time.temporal.ChronoField

val date = LocalDate.of(2025, 12, 31)
val newDate = ChronoField.YEAR.adjustInto(date, 2030)
println("New date: $newDate")

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

kotlinString "New date: 2030-12-31"

Пример

Проверим, является ли поле ChronoField.MONTH_OF_YEAR дато-ориентированным:

kotlinimport java.time.temporal.ChronoField

val isDateBased = ChronoField.MONTH_OF_YEAR.isDateBased()
val isTimeBased = ChronoField.MONTH_OF_YEAR.isTimeBased()

println("Is date based: $isDateBased")
println("Is time based: $isTimeBased")

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

kotlinString "Is date based: true"
String "Is time based: false"

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

  • класс ChronoField,
    который содержит стандартные реализации TemporalField
  • класс LocalDate,
    который представляет дату без времени
  • класс LocalTime,
    который представляет время без даты
  • класс LocalDateTime,
    который представляет дату и время