НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
1188 of 1310 menu

Функция previousTransition

Функция previousTransition класса ZoneRules возвращает предыдущий переход между стандартным и летним временем относительно указанного момента времени. В параметр мы передаем момент времени в виде объекта Instant, а функция возвращает объект ZoneOffsetTransition, содержащий информацию о переходе.

Импорт

import java.time.Instant import java.time.zone.ZoneRules import java.time.zone.ZoneOffsetTransition

Синтаксис

fun previousTransition(instant: Instant): ZoneOffsetTransition?

Пример

Получим предыдущий переход для часового пояса "Europe/Moscow" на момент 1640995200:

val zone = java.time.ZoneId.of("Europe/Moscow") val rules = zone.rules val instant = Instant.ofEpochSecond(1640995200) val transition = rules.previousTransition(instant) if (transition != null) { println("Transition: $transition") println("DateTime before: ${transition.dateTimeBefore}") println("DateTime after: ${transition.dateTimeAfter}") println("Duration: ${transition.duration}") } else { println("No previous transition found") }

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

String "Transition: Transition[Gap at 2021-03-28T02:00+03:00 to +04:00]" String "DateTime before: 2021-03-28T02:00+03:00" String "DateTime after: 2021-03-28T03:00+04:00" String "Duration: PT1H"

Пример

Проверим наличие предыдущего перехода для фиксированного часового пояса:

val zone = java.time.ZoneId.of("UTC") val rules = zone.rules val instant = Instant.now() val transition = rules.previousTransition(instant) println("Has previous transition: ${transition != null}")

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

String "Has previous transition: false"

Пример

Получим информацию о нескольких предыдущих переходах:

val zone = java.time.ZoneId.of("America/New_York") val rules = zone.rules var currentInstant = Instant.now() for (i in 1..3) { val transition = rules.previousTransition(currentInstant) if (transition != null) { println("Transition ${i}: ${transition.instant}") println("Offset before: ${transition.offsetBefore}") println("Offset after: ${transition.offsetAfter}") println("---") currentInstant = transition.instant.minusSeconds(1) } else { break } }

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

String "Transition 1: 2023-11-05T06:00:00Z" String "Offset before: -04:00" String "Offset after: -05:00" String "---" String "Transition 2: 2023-03-12T07:00:00Z" String "Offset before: -05:00" String "Offset after: -04:00" String "---" String "Transition 3: 2022-11-06T06:00:00Z" String "Offset before: -04:00" String "Offset after: -05:00"

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

  • функцию nextTransition класса ZoneRules,
    которая возвращает следующий переход времени
  • функцию getTransitions класса ZoneRules,
    которая возвращает все переходы времени
  • функцию isDaylightSavings класса ZoneRules,
    которая проверяет действует ли летнее время
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить