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

Функция withEarlierOffsetAtOverlap

Функция withEarlierOffsetAtOverlap класса ZonedDateTime возвращает копию объекта с более ранним смещением при переходе через неоднозначное время в часовом поясе. Эта функция используется для обработки случаев, когда одно локальное время соответствует двум разным смещениям из-за перехода на летнее время.

Импорт

import java.time.ZonedDateTime

Синтаксис

fun withEarlierOffsetAtOverlap(): ZonedDateTime

Пример

Создадим объект ZonedDateTime во время перехода на летнее время и применим функцию:

import java.time.ZoneId import java.time.ZonedDateTime import java.time.LocalDateTime val zone = ZoneId.of("America/New_York") val ambiguousTime = LocalDateTime.of(2025, 11, 2, 1, 30) val zdt = ZonedDateTime.of(ambiguousTime, zone) val result = zdt.withEarlierOffsetAtOverlap() println("Original: $zdt") println("With earlier offset: $result")

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

String "Original: 2025-11-02T01:30-04:00[America/New_York]" String "With earlier offset: 2025-11-02T01:30-04:00[America/New_York]"

Пример

Проверим разницу в смещениях при переходе на летнее время:

import java.time.ZoneId import java.time.ZonedDateTime import java.time.LocalDateTime val zone = ZoneId.of("America/New_York") val dt = LocalDateTime.of(2025, 11, 2, 1, 30) val zdt = ZonedDateTime.of(dt, zone) val earlier = zdt.withEarlierOffsetAtOverlap() val later = zdt.withLaterOffsetAtOverlap() println("Earlier offset: ${earlier.offset}") println("Later offset: ${later.offset}")

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

String "Earlier offset: -04:00" String "Later offset: -05:00"

Пример

Сравним работу функции в обычное время и во время перехода:

import java.time.ZoneId import java.time.ZonedDateTime import java.time.LocalDateTime val zone = ZoneId.of("America/New_York") val normalTime = LocalDateTime.of(2025, 6, 15, 12, 0) val normalZdt = ZonedDateTime.of(normalTime, zone) val normalResult = normalZdt.withEarlierOffsetAtOverlap() val overlapTime = LocalDateTime.of(2025, 11, 2, 1, 30) val overlapZdt = ZonedDateTime.of(overlapTime, zone) val overlapResult = overlapZdt.withEarlierOffsetAtOverlap() println("Normal time result: $normalResult") println("Overlap time result: $overlapResult") println("Are they equal? ${normalZdt == normalResult}") println("Are they equal? ${overlapZdt == overlapResult}")

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

String "Normal time result: 2025-06-15T12:00-04:00[America/New_York]" String "Overlap time result: 2025-11-02T01:30-04:00[America/New_York]" String "Are they equal? true" String "Are they equal? true"

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

  • функцию withLaterOffsetAtOverlap класса ZonedDateTime,
    которая возвращает копию с более поздним смещением при перекрытии
  • функцию withZoneSameInstant класса ZonedDateTime,
    которая преобразует время в другой часовой пояс с сохранением момента времени
  • функцию getOffset класса ZonedDateTime,
    которая возвращает смещение часового пояса
  • класс ZoneId,
    который представляет идентификатор часового пояса
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить