Стажировка
Открыта запись на бесплатный пробный месяц! Жми для подробностей! →
1187 of 1310 menu
По вашим просьбам сделал СВЕЖУЮ ОФЛАЙН ВЕРСИЮ номер 4 (временную). Рекомендую скачать на случай проблем с доступностью сайта.

Функция nextTransition

Функция nextTransition класса ZoneRules возвращает следующий переход между стандартным и летним временем для указанного момента времени. В параметр мы передаем момент времени, начиная с которого нужно найти следующий переход.

Импорт

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

Синтаксис

fun nextTransition(instant: Instant): ZoneOffsetTransition?

Пример

Получим следующий переход для часового пояса "America/New_York":

val zone = ZoneId.of("America/New_York") val rules = zone.rules val currentInstant = Instant.now() val nextTransition = rules.nextTransition(currentInstant) if (nextTransition != null) { println("Next transition: $nextTransition") println("DateTime: ${nextTransition.dateTimeBefore}") println("Offset before: ${nextTransition.offsetBefore}") println("Offset after: ${nextTransition.offsetAfter}") } else { println("No future transitions") }

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

String "Next transition: Transition[Gap at 2025-03-09T02:00-05:00 to -04:00]"

Пример

Проверим наличие переходов для UTC:

val utcZone = ZoneId.of("UTC") val utcRules = utcZone.rules val instant = Instant.parse("2025-01-01T00:00:00Z") val transition = utcRules.nextTransition(instant) println("Has transitions: ${transition != null}")

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

String "Has transitions: false"

Пример

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

val londonZone = ZoneId.of("Europe/London") val londonRules = londonZone.rules var currentInstant = Instant.now() var transition: ZoneOffsetTransition? println("Future transitions for Europe/London:") for (i in 1..5) { transition = londonRules.nextTransition(currentInstant) if (transition == null) break println("${i}. ${transition.dateTimeBefore} " + "${transition.offsetBefore} -> ${transition.offsetAfter}") currentInstant = transition.instant }

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

String "Future transitions for Europe/London:" String "1. 2025-03-30T01:00Z Z -> +01:00" String "2. 2025-10-26T01:00Z +01:00 -> Z"

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

  • функцию previousTransition класса ZoneRules,
    которая возвращает предыдущий переход
  • функцию getTransitions класса ZoneRules,
    которая возвращает все переходы
  • функцию isDaylightSavings класса ZoneRules,
    которая проверяет действует ли летнее время
  • класс ZoneId,
    который представляет идентификатор часового пояса