Класс 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,
который представляет дату и время