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