Функция withOffsetSameInstant

Функция withOffsetSameInstant класса OffsetDateTime преобразует текущий объект даты и времени со смещением к новому указанному смещению, сохраняя при этом тот же самый момент времени в UTC. В параметр мы передаем объект ZoneOffset, представляющий новое смещение от UTC.

Импорт

kotlinimport java.time.OffsetDateTime
import java.time.ZoneOffset

Синтаксис

kotlinfun withOffsetSameInstant(offset: ZoneOffset): OffsetDateTime

Пример

Преобразуем время со смещением +03:00 к смещению +05:00 с сохранением момента времени:

kotlinval original = OffsetDateTime.parse("2025-07-15T10:30:00+03:00")
val newOffset = ZoneOffset.ofHours(5)
val result = original.withOffsetSameInstant(newOffset)
println(result)

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

kotlinString "2025-07-15T12:30:00+05:00"

Пример

Преобразуем время из UTC в смещение -08:00:

kotlinval utcTime = OffsetDateTime.parse("2025-12-31T23:45:00Z")
val pacificOffset = ZoneOffset.ofHours(-8)
val result = utcTime.withOffsetSameInstant(pacificOffset)
println(result)

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

kotlinString "2025-12-31T15:45:00-08:00"

Пример

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

kotlinval 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")

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

kotlinString "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,
    который представляет дату и время с часовым поясом