НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
1022 of 1310 menu

Метод 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,
    который представляет форматтер даты-времени
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить