Класс TemporalUnit

Интерфейс TemporalUnit представляет единицу измерения времени в Java Time API. Он определяет такие единицы как секунды, минуты, часы, дни, недели, месяцы и годы. Этот интерфейс предоставляет методы для получения длительности единицы, проверки типа единицы (дата или время), а также для добавления единицы к временному объекту и вычисления разницы между временными объектами.

Импорт

kotlinimport java.time.temporal.TemporalUnit
import java.time.temporal.ChronoUnit

Синтаксис

kotlininterface TemporalUnit {
  fun getDuration(): Duration
  fun isDurationEstimated(): Boolean
  fun isDateBased(): Boolean
  fun isTimeBased(): Boolean
  fun <R : Temporal> addTo(temporal: R, amount: Long): R
  fun between(temporal1Inclusive: Temporal, temporal2Exclusive: Temporal): Long
}

Пример

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

kotlinval secondDuration = ChronoUnit.SECONDS.duration
val hourDuration = ChronoUnit.HOURS.duration
val dayDuration = ChronoUnit.DAYS.duration

println("Second duration: $secondDuration")
println("Hour duration: $hourDuration")
println("Day duration: $dayDuration")

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

kotlinString "Second duration: PT1S"
String "Hour duration: PT1H"
String "Day duration: PT24H"

Пример

Проверим тип временных единиц:

kotlinval isSecondsTimeBased = ChronoUnit.SECONDS.isTimeBased
val isDaysDateBased = ChronoUnit.DAYS.isDateBased
val isMonthsDateBased = ChronoUnit.MONTHS.isDateBased

println("Seconds time-based: $isSecondsTimeBased")
println("Days date-based: $isDaysDateBased")
println("Months date-based: $isMonthsDateBased")

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

kotlinString "Seconds time-based: true"
String "Days date-based: true"
String "Months date-based: true"

Пример

Добавим временные единицы к дате:

kotlinimport java.time.LocalDate

val date = LocalDate.of(2025, 6, 15)
val newDateDays = ChronoUnit.DAYS.addTo(date, 10)
val newDateMonths = ChronoUnit.MONTHS.addTo(date, 2)

println("Original date: $date")
println("After adding 10 days: $newDateDays")
println("After adding 2 months: $newDateMonths")

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

kotlinString "Original date: 2025-06-15"
String "After adding 10 days: 2025-06-25"
String "After adding 2 months: 2025-08-15"

Пример

Вычислим разницу между датами в различных единицах:

kotlinval date1 = LocalDate.of(2025, 1, 1)
val date2 = LocalDate.of(2025, 12, 31)

val daysBetween = ChronoUnit.DAYS.between(date1, date2)
val monthsBetween = ChronoUnit.MONTHS.between(date1, date2)
val yearsBetween = ChronoUnit.YEARS.between(date1, date2)

println("Days between: $daysBetween")
println("Months between: $monthsBetween")
println("Years between: $yearsBetween")

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

kotlinString "Days between: 364"
String "Months between: 11"
String "Years between: 0"

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

  • класс ChronoUnit,
    который содержит стандартные реализации TemporalUnit
  • класс Duration,
    который представляет длительность времени
  • интерфейс TemporalAmount,
    который представляет количество времени