Функция withZoneSameLocal
Функция withZoneSameLocal
класса ZonedDateTime
создает новый объект ZonedDateTime
с указанным часовым поясом, сохраняя локальные дату и время без изменений.
В первый параметр мы передаем объект ZoneId
, представляющий целевой часовой пояс.
Импорт
import java.time.ZonedDateTime
import java.time.ZoneId
Синтаксис
fun withZoneSameLocal(zone: ZoneId): ZonedDateTime
Пример
Изменим часовой пояс с "Europe/Moscow"
на "America/New_York"
, сохранив локальное время:
val original = ZonedDateTime.parse("2025-07-15T14:30:00+03:00[Europe/Moscow]")
val newYorkTime = original.withZoneSameLocal(ZoneId.of("America/New_York"))
println("Original: $original")
println("New York: $newYorkTime")
Результат выполнения кода:
String "Original: 2025-07-15T14:30+03:00[Europe/Moscow]"
String "New York: 2025-07-15T14:30-04:00[America/New_York]"
Пример
Сравним работу withZoneSameLocal
и withZoneSameInstant
:
val moscowTime = ZonedDateTime.parse("2025-12-31T20:00:00+03:00[Europe/Moscow]")
val sameLocal = moscowTime.withZoneSameLocal(ZoneId.of("UTC"))
val sameInstant = moscowTime.withZoneSameInstant(ZoneId.of("UTC"))
println("Same local: $sameLocal")
println("Same instant: $sameInstant")
Результат выполнения кода:
String "Same local: 2025-12-31T20:00Z[UTC]"
String "Same instant: 2025-12-31T17:00Z[UTC]"
Пример
Использование системного часового пояса по умолчанию:
val tokyoTime = ZonedDateTime.parse("2025-03-20T09:15:00+09:00[Asia/Tokyo]")
val systemZoneTime = tokyoTime.withZoneSameLocal(ZoneId.systemDefault())
println("Tokyo time: $tokyoTime")
println("System zone: $systemZoneTime")
Результат выполнения кода:
String "Tokyo time: 2025-03-20T09:15+09:00[Asia/Tokyo]"
String "System zone: 2025-03-20T09:15+03:00[Europe/Moscow]"
Смотрите также
-
функцию
withZoneSameInstant
классаZonedDateTime
,
которая изменяет часовой пояс с сохранением момента времени -
функцию
getZone
классаZonedDateTime
,
которая возвращает текущий часовой пояс -
класс
ZoneId
,
который представляет идентификатор часового пояса -
функцию
toLocalDateTime
классаZonedDateTime
,
которая возвращает локальную дату и время