АКЦИЯ: бесплатные месячные курсы по созданию сайтов
на выбор: верстка, JavaScript, PHP, Python или фреймворки. Сегодня последний день для записи! Жми!
922 of 1310 menu
Бесплатный курс по выкладке сайтов на хостинг. Разбираем все нюансы! Начало 14 октября. Жми для записи!

Функция 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,
    который представляет временной промежуток