Функция withOffsetSameInstant
Функция withOffsetSameInstant класса OffsetDateTime преобразует текущий объект даты и времени со смещением к новому указанному смещению, сохраняя при этом тот же самый момент времени в UTC.
В параметр мы передаем объект ZoneOffset, представляющий новое смещение от UTC.
Импорт
import java.time.OffsetDateTime
import java.time.ZoneOffset
Синтаксис
fun withOffsetSameInstant(offset: ZoneOffset): OffsetDateTime
Пример
Преобразуем время со смещением +03:00 к смещению +05:00 с сохранением момента времени:
val original = OffsetDateTime.parse("2025-07-15T10:30:00+03:00")
val newOffset = ZoneOffset.ofHours(5)
val result = original.withOffsetSameInstant(newOffset)
println(result)
Результат выполнения кода:
String "2025-07-15T12:30:00+05:00"
Пример
Преобразуем время из UTC в смещение -08:00:
val utcTime = OffsetDateTime.parse("2025-12-31T23:45:00Z")
val pacificOffset = ZoneOffset.ofHours(-8)
val result = utcTime.withOffsetSameInstant(pacificOffset)
println(result)
Результат выполнения кода:
String "2025-12-31T15:45:00-08:00"
Пример
Сравним преобразование с сохранением момента времени и с сохранением локального времени:
val original = OffsetDateTime.parse("2025-03-20T15:00:00+02:00")
val newOffset = ZoneOffset.ofHours(-4)
val sameInstant = original.withOffsetSameInstant(newOffset)
val sameLocal = original.withOffsetSameLocal(newOffset)
println("Same instant: $sameInstant")
println("Same local: $sameLocal")
Результат выполнения кода:
String "Same instant: 2025-03-20T09:00:00-04:00"
String "Same local: 2025-03-20T15:00:00-04:00"
Смотрите также
-
функцию
withOffsetSameLocalклассаOffsetDateTime,
которая изменяет смещение с сохранением локального времени -
функцию
getOffsetклассаOffsetDateTime,
которая возвращает текущее смещение от UTC -
класс
ZoneOffset,
который представляет смещение от UTC -
класс
ZonedDateTime,
который представляет дату и время с часовым поясом