Функция withOffsetSameLocal

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

Импорт

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

Синтаксис

kotlinfun withOffsetSameLocal(offset: ZoneOffset): OffsetDateTime

Пример

Создадим объект OffsetDateTime и изменим его смещение с сохранением локального времени:

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

println("Original: $original")
println("Result: $result")

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

kotlinString "Original: 2025-03-15T10:30:45+03:00"
String "Result: 2025-03-15T10:30:45+05:00"

Пример

Сравним работу withOffsetSameLocal и withOffsetSameInstant:

kotlinval datetime = OffsetDateTime.parse("2025-07-20T15:45:00+02:00")
val newOffset = ZoneOffset.ofHours(-3)

val sameLocal = datetime.withOffsetSameLocal(newOffset)
val sameInstant = datetime.withOffsetSameInstant(newOffset)

println("Original: $datetime")
println("Same Local: $sameLocal")
println("Same Instant: $sameInstant")

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

kotlinString "Original: 2025-07-20T15:45:00+02:00"
String "Same Local: 2025-07-20T15:45:00-03:00"
String "Same Instant: 2025-07-20T10:45:00-03:00"

Пример

Использование с UTC смещением:

kotlinval datetime = OffsetDateTime.parse("2025-12-31T23:59:59+05:00")
val utcResult = datetime.withOffsetSameLocal(ZoneOffset.UTC)

println("Original: $datetime")
println("UTC Result: $utcResult")

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

kotlinString "Original: 2025-12-31T23:59:59+05:00"
String "UTC Result: 2025-12-31T23:59:59Z"

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

  • функцию withOffsetSameInstant класса OffsetDateTime,
    которая изменяет смещение с сохранением момента времени
  • функцию getOffset класса OffsetDateTime,
    которая возвращает текущее смещение
  • функцию toLocalDateTime класса OffsetDateTime,
    которая возвращает локальную дату и время
  • класс ZoneOffset,
    который представляет смещение часового пояса