Функция withZoneSameInstant
Функция withZoneSameInstant класса ZonedDateTime преобразует объект даты и времени в другой часовой пояс, сохраняя тот же момент времени.
В параметр мы передаем целевой часовой пояс ZoneId, к которому нужно преобразовать текущее время.
Импорт
import java.time.ZonedDateTime
import java.time.ZoneId
Синтаксис
fun withZoneSameInstant(zone: ZoneId): ZonedDateTime
Пример
Преобразуем время из Нью-Йорка в Лондон с сохранением момента времени:
val newYorkTime = ZonedDateTime.parse("2025-03-15T10:30:00-05:00[America/New_York]")
val londonTime = newYorkTime.withZoneSameInstant(ZoneId.of("Europe/London"))
println(londonTime)
Результат выполнения кода:
String "2025-03-15T15:30:00Z[Europe/London]"
Пример
Преобразуем время из Toкио в UTC:
val tokyoTime = ZonedDateTime.parse("2025-07-20T18:45:00+09:00[Asia/Tokyo]")
val utcTime = tokyoTime.withZoneSameInstant(ZoneId.of("UTC"))
println(utcTime)
Результат выполнения кода:
String "2025-07-20T09:45:00Z[UTC]"
Пример
Сравним преобразование с сохранением момента времени и с сохранением локального времени:
val 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")
Результат выполнения кода:
String "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,
которая преобразует время в локальную дату и время без информации о часовом поясе