Метод appendOffset

Метод appendOffset класса DateTimeFormatterBuilder добавляет поддержку смещения часового пояса (offset) в форматер. В первый параметр мы передаем паттерн для отображения смещения, во второй параметр мы передаем значение по умолчанию, которое будет использоваться при парсинге, если смещение не указано.

Импорт

kotlinimport java.time.format.DateTimeFormatterBuilder

Синтаксис

kotlinfun appendOffset(pattern: String, noOffsetText: String): DateTimeFormatterBuilder

Пример

Создадим форматтер с поддержкой смещения часового пояса:

kotlinval formatter = DateTimeFormatterBuilder()
  .appendPattern("yyyy-MM-dd HH:mm:ss ")
  .appendOffset("+HH:MM", "Z")
  .toFormatter()

val text = "2025-12-31 23:59:59 +03:00"
val parsed = java.time.OffsetDateTime.parse(text, formatter)
println(parsed)

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

kotlinString "2025-12-31T23:59:59+03:00"

Пример

Используем различные паттерны для форматирования смещения:

kotlinval formatter1 = DateTimeFormatterBuilder()
  .appendOffset("+HHMM", "Z")
  .toFormatter()

val formatter2 = DateTimeFormatterBuilder()
  .appendOffset("+HH:MM", "Z")
  .toFormatter()

val offset = java.time.ZoneOffset.ofHours(3)
val time = java.time.OffsetTime.of(15, 30, 0, 0, offset)

println(time.format(formatter1))
println(time.format(formatter2))

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

kotlinString "+0300"
String "+03:00"

Пример

Парсинг строки со смещением часового пояса:

kotlinval formatter = DateTimeFormatterBuilder()
  .appendPattern("dd.MM.yyyy HH:mm:ss ")
  .appendOffset("+HHMM", "Z")
  .toFormatter()

val text = "31.12.2025 23:59:59 +0300"
val parsed = java.time.OffsetDateTime.parse(text, formatter)
println(parsed)
println(parsed.offset)

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

kotlinString "2025-12-31T23:59:59+03:00"
String "+03:00"

Пример

Обработка случая, когда смещение не указано (используется значение по умолчанию):

kotlinval formatter = DateTimeFormatterBuilder()
  .appendPattern("yyyy-MM-dd HH:mm:ss ")
  .appendOffset("+HH:MM", "Z")
  .toFormatter()

val text = "2025-12-31 23:59:59 Z"
val parsed = java.time.OffsetDateTime.parse(text, formatter)
println(parsed)
println(parsed.offset)

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

kotlinString "2025-12-31T23:59:59Z"
String "Z"

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

  • метод appendPattern класса DateTimeFormatterBuilder,
    который добавляет паттерн для форматирования даты и времени
  • метод appendZoneId класса DateTimeFormatterBuilder,
    который добавляет идентификатор часового пояса
  • класс ZoneOffset,
    который представляет смещение часового пояса
  • класс OffsetDateTime,
    который представляет дату и время со смещением