Функция nextTransition

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

Импорт

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

Синтаксис

kotlinfun nextTransition(instant: Instant): ZoneOffsetTransition?

Пример

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

kotlinval 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")
}

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

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

Пример

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

kotlinval 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}")

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

kotlinString "Has transitions: false"

Пример

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

kotlinval 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
}

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

kotlinString "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,
    который представляет идентификатор часового пояса