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