Функция withZoneSameInstant

Функция withZoneSameInstant класса ZonedDateTime преобразует объект даты и времени в другой часовой пояс, сохраняя тот же момент времени. В параметр мы передаем целевой часовой пояс ZoneId, к которому нужно преобразовать текущее время.

Импорт

kotlinimport java.time.ZonedDateTime
import java.time.ZoneId

Синтаксис

kotlinfun withZoneSameInstant(zone: ZoneId): ZonedDateTime

Пример

Преобразуем время из Нью-Йорка в Лондон с сохранением момента времени:

kotlinval newYorkTime = ZonedDateTime.parse("2025-03-15T10:30:00-05:00[America/New_York]")
val londonTime = newYorkTime.withZoneSameInstant(ZoneId.of("Europe/London"))
println(londonTime)

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

kotlinString "2025-03-15T15:30:00Z[Europe/London]"

Пример

Преобразуем время из Toкио в UTC:

kotlinval tokyoTime = ZonedDateTime.parse("2025-07-20T18:45:00+09:00[Asia/Tokyo]")
val utcTime = tokyoTime.withZoneSameInstant(ZoneId.of("UTC"))
println(utcTime)

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

kotlinString "2025-07-20T09:45:00Z[UTC]"

Пример

Сравним преобразование с сохранением момента времени и с сохранением локального времени:

kotlinval original = ZonedDateTime.parse("2025-12-31T20:00:00-08:00[America/Los_Angeles]")

val sameInstant = original.withZoneSameInstant(ZoneId.of("Europe/Paris"))
val sameLocal = original.withZoneSameLocal(ZoneId.of("Europe/Paris"))

println("Same instant: $sameInstant")
println("Same local: $sameLocal")

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

kotlinString "Same instant: 2025-01-01T05:00:00+01:00[Europe/Paris]"
String "Same local: 2025-12-31T20:00:00+01:00[Europe/Paris]"

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

  • функцию withZoneSameLocal класса ZonedDateTime,
    которая преобразует время в другой часовой пояс с сохранением локального времени
  • функцию getZone класса ZonedDateTime,
    которая возвращает текущий часовой пояс
  • класс ZoneId,
    который представляет идентификатор часового пояса
  • функцию toLocalDateTime класса ZonedDateTime,
    которая преобразует время в локальную дату и время без информации о часовом поясе