Функция from
Функция from
класса Period
создает объект Period
из временной единицы, реализующей интерфейс TemporalAmount
.
В параметр мы передаем объект, содержащий информацию о периоде времени, который необходимо преобразовать в Period
.
Импорт
import java.time.Period
import java.time.temporal.TemporalAmount
Синтаксис
fun from(amount: TemporalAmount): Period
Пример
Создадим объект Period
из другого объекта Period
:
val originalPeriod = Period.of(2, 5, 15)
val newPeriod = Period.from(originalPeriod)
println(newPeriod)
Результат выполнения кода:
String "P2Y5M15D"
Пример
Попытка создания Period
из неподдерживаемого типа временной единицы:
import java.time.Duration
try {
val duration = Duration.ofHours(48)
val period = Period.from(duration)
println(period)
} catch (e: Exception) {
println("Error: " + e.message)
}
Результат выполнения кода:
String "Error: Unable to convert to Period"
Пример
Использование Period.from
с кастомной реализацией TemporalAmount
:
import java.time.temporal.TemporalAmount
import java.time.temporal.TemporalUnit
import java.time.temporal.ChronoUnit
import java.util.List
val customAmount = object : TemporalAmount {
override fun get(unit: TemporalUnit): Long {
return when (unit) {
ChronoUnit.YEARS -> 1
ChronoUnit.MONTHS -> 6
ChronoUnit.DAYS -> 10
else -> 0
}
}
override fun getUnits(): List<TemporalUnit> {
return listOf(ChronoUnit.YEARS, ChronoUnit.MONTHS, ChronoUnit.DAYS)
}
override fun addTo(temporal: java.time.temporal.Temporal): java.time.temporal.Temporal {
return temporal.plus(1, ChronoUnit.YEARS)
.plus(6, ChronoUnit.MONTHS)
.plus(10, ChronoUnit.DAYS)
}
override fun subtractFrom(temporal: java.time.temporal.Temporal): java.time.temporal.Temporal {
return temporal.minus(1, ChronoUnit.YEARS)
.minus(6, ChronoUnit.MONTHS)
.minus(10, ChronoUnit.DAYS)
}
}
val period = Period.from(customAmount)
println(period)
Результат выполнения кода:
String "P1Y6M10D"
Смотрите также
-
функцию
of
классаPeriod
,
которая создает период из отдельных компонентов -
функцию
parse
классаPeriod
,
которая преобразует строку в период -
функцию
between
классаPeriod
,
которая вычисляет период между двумя датами -
интерфейс
TemporalAmount
,
который представляет временной промежуток