Класс TemporalAmount

Интерфейс TemporalAmount представляет временной промежуток, который может быть измерен в различных единицах времени. Реализации этого интерфейса, такие как Period и Duration, позволяют работать с датами и временем, добавляя или вычитая промежутки. Метод get возвращает значение указанной единицы времени, метод getUnits возвращает список доступных единиц измерения, метод addTo добавляет промежуток к временному объекту, а метод subtractFrom вычитает промежуток из временного объекта.

Импорт

kotlinimport java.time.temporal.TemporalAmount
import java.time.Period
import java.time.Duration

Синтаксис

kotlininterface TemporalAmount {
    fun get(unit: TemporalUnit): Long
    fun getUnits(): List<TemporalUnit>
    fun addTo(temporal: Temporal): Temporal
    fun subtractFrom(temporal: Temporal): Temporal
}

Пример

Создадим период в 2 года, 3 месяца и 10 дней и добавим его к дате:

kotlinimport java.time.LocalDate
import java.time.Period

val period = Period.of(2, 3, 10)
val date = LocalDate.of(2025, 1, 1)
val newDate = period.addTo(date)
println(newDate)

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

kotlinString "2027-04-11"

Пример

Получим компоненты временного промежутка:

kotlinimport java.time.Period
import java.time.temporal.ChronoUnit

val period = Period.of(1, 5, 15)
val years = period.get(ChronoUnit.YEARS)
val months = period.get(ChronoUnit.MONTHS)
val days = period.get(ChronoUnit.DAYS)

println("Years: $years, Months: $months, Days: $days")

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

kotlinString "Years: 1, Months: 5, Days: 15"

Пример

Получим список единиц измерения временного промежутка:

kotlinimport java.time.Duration

val duration = Duration.ofHours(5).plusMinutes(30)
val units = duration.getUnits()

for (unit in units) {
    println(unit)
}

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

kotlinString "Seconds"
String "Nanos"

Пример

Вычтем продолжительность из времени:

kotlinimport java.time.LocalTime
import java.time.Duration

val duration = Duration.ofMinutes(45)
val time = LocalTime.of(14, 30)
val newTime = duration.subtractFrom(time)
println(newTime)

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

kotlinString "13:45"

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

  • класс Period,
    который представляет период в годах, месяцах и днях
  • класс Duration,
    который представляет продолжительность в секундах и наносекундах
  • интерфейс TemporalUnit,
    который представляет единицу измерения времени
  • класс LocalDate,
    который представляет дату без времени