Метод optionalStart
Метод optionalStart класса DateTimeFormatterBuilder начинает необязательную секцию при построении форматтера.
Все элементы, добавленные после вызова этого метода, будут считаться необязательными до вызова optionalEnd.
Это позволяет парсить строки, которые могут содержать дополнительные необязательные компоненты.
Импорт
import java.time.format.DateTimeFormatterBuilder
Синтаксис
fun optionalStart(): DateTimeFormatterBuilder
Пример
Создадим форматтер для парсинга даты с необязательным временем:
val 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)
Результат выполнения кода:
String "2025-12-31T14:30:00"
String "2025-12-31T00:00:00"
Пример
Создадим форматтер с необязательными компонентами времени:
val 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)
Результат выполнения кода:
String "2025-07-15T14:30:45"
String "2025-07-15T14:30:00"
String "2025-07-15T00:00:00"
Пример
Используем необязательную секцию для парсинга временной зоны:
val 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)
Результат выполнения кода:
String "2025-03-20T10:15:30+03:00"
String "2025-03-20T10:15:30"
Смотрите также
-
метод
optionalEndклассаDateTimeFormatterBuilder,
который завершает необязательную секцию -
метод
appendPatternклассаDateTimeFormatterBuilder,
который добавляет шаблон к форматтеру -
метод
toFormatterклассаDateTimeFormatterBuilder,
который создает готовый форматтер -
класс
DateTimeFormatter,
который представляет форматтер даты-времени