Метод optionalStart
Метод optionalStart класса DateTimeFormatterBuilder начинает необязательную секцию при построении форматтера.
Все элементы, добавленные после вызова этого метода, будут считаться необязательными до вызова optionalEnd.
Это позволяет парсить строки, которые могут содержать дополнительные необязательные компоненты.
Импорт
kotlinimport java.time.format.DateTimeFormatterBuilder
Синтаксис
kotlinfun optionalStart(): DateTimeFormatterBuilder
Пример
Создадим форматтер для парсинга даты с необязательным временем:
kotlinval formatter = DateTimeFormatterBuilder()
.appendPattern("yyyy-MM-dd")
.optionalStart()
.appendPattern(" HH:mm:ss")
.optionalEnd()
.toFormatter()
val dateTimeStr1 = "2025-12-31 14:30:00"
val dateTime1 = java.time.LocalDateTime.parse(dateTimeStr1, formatter)
println(dateTime1)
val dateTimeStr2 = "2025-12-31"
val dateTime2 = java.time.LocalDateTime.parse(dateTimeStr2, formatter)
println(dateTime2)
Результат выполнения кода:
kotlinString "2025-12-31T14:30:00"
String "2025-12-31T00:00:00"
Пример
Создадим форматтер с необязательными компонентами времени:
kotlinval formatter = DateTimeFormatterBuilder()
.appendPattern("yyyy-MM-dd")
.optionalStart()
.appendPattern("'T'HH:mm")
.optionalStart()
.appendPattern(":ss")
.optionalEnd()
.optionalEnd()
.toFormatter()
val dateTimeStr1 = "2025-07-15T14:30:45"
val dateTime1 = java.time.LocalDateTime.parse(dateTimeStr1, formatter)
println(dateTime1)
val dateTimeStr2 = "2025-07-15T14:30"
val dateTime2 = java.time.LocalDateTime.parse(dateTimeStr2, formatter)
println(dateTime2)
val dateTimeStr3 = "2025-07-15"
val dateTime3 = java.time.LocalDateTime.parse(dateTimeStr3, formatter)
println(dateTime3)
Результат выполнения кода:
kotlinString "2025-07-15T14:30:45"
String "2025-07-15T14:30:00"
String "2025-07-15T00:00:00"
Пример
Используем необязательную секцию для парсинга временной зоны:
kotlinval formatter = DateTimeFormatterBuilder()
.appendPattern("yyyy-MM-dd HH:mm:ss")
.optionalStart()
.appendPattern(" XXX")
.optionalEnd()
.toFormatter()
val dateTimeStr1 = "2025-03-20 10:15:30 +03:00"
val dateTime1 = java.time.ZonedDateTime.parse(dateTimeStr1, formatter)
println(dateTime1)
val dateTimeStr2 = "2025-03-20 10:15:30"
val dateTime2 = java.time.LocalDateTime.parse(dateTimeStr2, formatter)
println(dateTime2)
Результат выполнения кода:
kotlinString "2025-03-20T10:15:30+03:00"
String "2025-03-20T10:15:30"
Смотрите также
-
метод
optionalEndклассаDateTimeFormatterBuilder,
который завершает необязательную секцию -
метод
appendPatternклассаDateTimeFormatterBuilder,
который добавляет шаблон к форматтеру -
метод
toFormatterклассаDateTimeFormatterBuilder,
который создает готовый форматтер -
класс
DateTimeFormatter,
который представляет форматтер даты-времени