Метод appendOffset
Метод appendOffset класса DateTimeFormatterBuilder добавляет поддержку смещения часового пояса (offset) в форматер.
В первый параметр мы передаем паттерн для отображения смещения, во второй параметр мы передаем значение по умолчанию, которое будет использоваться при парсинге, если смещение не указано.
Импорт
import java.time.format.DateTimeFormatterBuilder
Синтаксис
fun appendOffset(pattern: String, noOffsetText: String): DateTimeFormatterBuilder
Пример
Создадим форматтер с поддержкой смещения часового пояса:
val 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)
Результат выполнения кода:
String "2025-12-31T23:59:59+03:00"
Пример
Используем различные паттерны для форматирования смещения:
val 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))
Результат выполнения кода:
String "+0300"
String "+03:00"
Пример
Парсинг строки со смещением часового пояса:
val 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)
Результат выполнения кода:
String "2025-12-31T23:59:59+03:00"
String "+03:00"
Пример
Обработка случая, когда смещение не указано (используется значение по умолчанию):
val 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)
Результат выполнения кода:
String "2025-12-31T23:59:59Z"
String "Z"
Смотрите также
-
метод
appendPatternклассаDateTimeFormatterBuilder,
который добавляет паттерн для форматирования даты и времени -
метод
appendZoneIdклассаDateTimeFormatterBuilder,
который добавляет идентификатор часового пояса -
класс
ZoneOffset,
который представляет смещение часового пояса -
класс
OffsetDateTime,
который представляет дату и время со смещением