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

Класс DateTimeFormatterBuilder

Класс DateTimeFormatterBuilder используется для построения кастомных форматтеров даты и времени с помощью паттернов или программируемого API. Он позволяет комбинировать различные элементы формата, устанавливать опции парсинга и создавать сложные форматтеры, которые невозможно создать с помощью простых паттернов.

Импорт

import java.time.format.DateTimeFormatterBuilder

Синтаксис

val builder = DateTimeFormatterBuilder()
fun appendPattern(pattern: String): DateTimeFormatterBuilder
fun appendValue(field: TemporalField, width: Int): DateTimeFormatterBuilder
fun appendLiteral(literal: Char): DateTimeFormatterBuilder
fun toFormatter(): DateTimeFormatter

Пример

Создадим форматтер для даты в формате день/месяц/год:

val formatter = DateTimeFormatterBuilder() .appendPattern("dd/MM/yyyy") .toFormatter() val dateStr = "31/12/2025" val date = LocalDate.parse(dateStr, formatter) println(date)

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

String "2025-12-31"

Пример

Создадим форматтер с фиксированным литералом:

val formatter = DateTimeFormatterBuilder() .appendValue(ChronoField.DAY_OF_MONTH, 2) .appendLiteral('/') .appendValue(ChronoField.MONTH_OF_YEAR, 2) .appendLiteral('/') .appendValue(ChronoField.YEAR, 4) .toFormatter() val dateStr = "31/12/2025" val date = LocalDate.parse(dateStr, formatter) println(date)

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

String "2025-12-31"

Пример

Создадим форматтер с опциональной частью:

val formatter = DateTimeFormatterBuilder() .appendPattern("yyyy-MM-dd") .optionalStart() .appendLiteral('T') .appendPattern("HH:mm:ss") .optionalEnd() .toFormatter() val dateTimeStr1 = "2025-12-31T15:30:45" val dateTimeStr2 = "2025-12-31" val dateTime1 = LocalDateTime.parse(dateTimeStr1, formatter) val dateTime2 = LocalDateTime.parse(dateTimeStr2, formatter) println(dateTime1) println(dateTime2)

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

String "2025-12-31T15:30:45" String "2025-12-31T00:00:00"

Пример

Создадим форматтер с чувствительностью к регистру:

val formatter = DateTimeFormatterBuilder() .parseCaseInsensitive() .appendPattern("yyyy-MMM-dd") .toFormatter() val dateStr1 = "2025-Dec-31" val dateStr2 = "2025-DEC-31" val date1 = LocalDate.parse(dateStr1, formatter) val date2 = LocalDate.parse(dateStr2, formatter) println(date1) println(date2)

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

String "2025-12-31" String "2025-12-31"

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

  • класс DateTimeFormatter,
    который предоставляет готовые форматтеры и методы для работы с ними
  • функцию ofPattern класса DateTimeFormatter,
    которая создает форматтер из строки паттерна
  • класс LocalDate,
    который представляет дату без времени
  • класс LocalDateTime,
    который представляет дату и время
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить