Метод optionalEnd

Метод optionalEnd класса DateTimeFormatterBuilder завершает необязательную секцию, начатую методом optionalStart. Все элементы форматтера, добавленные между optionalStart и optionalEnd, будут считаться необязательными при парсинге строк.

Импорт

kotlinimport java.time.format.DateTimeFormatterBuilder

Синтаксис

kotlinfun optionalEnd(): DateTimeFormatterBuilder

Пример

Создадим форматтер с необязательной временной частью:

kotlinval builder = DateTimeFormatterBuilder()

builder.appendPattern("yyyy-MM-dd")
builder.optionalStart()
builder.appendPattern(" HH:mm:ss")
builder.optionalEnd()

val formatter = builder.toFormatter()

val dateTime1 = formatter.parse("2025-12-31 15:30:45")
val dateTime2 = formatter.parse("2025-12-31")

println(dateTime1)
println(dateTime2)

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

kotlinString "{Year=2025, Month=12, Day=31, Hour=15, Minute=30, Second=45}"
String "{Year=2025, Month=12, Day=31}"

Пример

Создадим форматтер с необязательными секундами:

kotlinval builder = DateTimeFormatterBuilder()

builder.appendPattern("HH:mm")
builder.optionalStart()
builder.appendPattern(":ss")
builder.optionalEnd()

val formatter = builder.toFormatter()

val time1 = formatter.parse("15:30:45")
val time2 = formatter.parse("15:30")

println(time1)
println(time2)

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

kotlinString "{Hour=15, Minute=30, Second=45}"
String "{Hour=15, Minute=30}"

Пример

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

kotlinval builder = DateTimeFormatterBuilder()

builder.appendPattern("yyyy-MM-dd")
builder.optionalStart()
builder.appendPattern("'T'HH:mm:ss")
builder.optionalStart()
builder.appendPattern(" XXX")
builder.optionalEnd()
builder.optionalEnd()

val formatter = builder.toFormatter()

val date1 = formatter.parse("2025-12-31T15:30:45+03:00")
val date2 = formatter.parse("2025-12-31T15:30:45")
val date3 = formatter.parse("2025-12-31")

println(date1)
println(date2)
println(date3)

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

kotlinString "{Year=2025, Month=12, Day=31, Hour=15, Minute=30, Second=45, OffsetSeconds=10800}"
String "{Year=2025, Month=12, Day=31, Hour=15, Minute=30, Second=45}"
String "{Year=2025, Month=12, Day=31}"

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

  • метод optionalStart класса DateTimeFormatterBuilder,
    который начинает необязательную секцию
  • метод appendPattern класса DateTimeFormatterBuilder,
    который добавляет шаблон к форматтеру
  • метод toFormatter класса DateTimeFormatterBuilder,
    который создает форматтер из билдера
  • класс DateTimeFormatter,
    который форматирует и парсит даты и времена