Метод parseStrict

Метод parseStrict класса DateTimeFormatterBuilder переключает парсер в строгий режим, при котором входная строка должна точно соответствовать указанному формату. В отличие от режима по умолчанию, строгий парсинг не допускает неявных значений и требует полного соответствия всех компонентов даты и времени.

Импорт

kotlinimport java.time.format.DateTimeFormatterBuilder

Синтаксис

kotlinfun parseStrict(): DateTimeFormatterBuilder

Пример

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

kotlinval formatter = DateTimeFormatterBuilder()
  .appendPattern("dd/MM/yyyy")
  .parseStrict()
  .toFormatter()

val dateStr = "31/12/2025"
val date = java.time.LocalDate.parse(dateStr, formatter)
println(date)

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

kotlinString "2025-12-31"

Пример

Попробуем распарсить неполную дату в строгом режиме:

kotlinval formatter = DateTimeFormatterBuilder()
  .appendPattern("dd/MM/yyyy")
  .parseStrict()
  .toFormatter()

val dateStr = "31/12/25"
try {
  val date = java.time.LocalDate.parse(dateStr, formatter)
  println(date)
} catch (e: Exception) {
  println("Error: " + e.message)
}

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

kotlinString "Error: Text '31/12/25' could not be parsed at index 6"

Пример

Сравнение строгого и нестрогого парсинга:

kotlinval strictFormatter = DateTimeFormatterBuilder()
  .appendPattern("dd/MM/yyyy")
  .parseStrict()
  .toFormatter()

val lenientFormatter = DateTimeFormatterBuilder()
  .appendPattern("dd/MM/yyyy")
  .parseLenient()
  .toFormatter()

val dateStr = "31/12/25"

try {
  val strictDate = java.time.LocalDate.parse(dateStr, strictFormatter)
  println("Strict: " + strictDate)
} catch (e: Exception) {
  println("Strict error: " + e.message)
}

try {
  val lenientDate = java.time.LocalDate.parse(dateStr, lenientFormatter)
  println("Lenient: " + lenientDate)
} catch (e: Exception) {
  println("Lenient error: " + e.message)
}

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

kotlinString "Strict error: Text '31/12/25' could not be parsed at index 6"
String "Lenient: 0025-12-31"

Пример

Строгий парсинг даты и времени:

kotlinval formatter = DateTimeFormatterBuilder()
  .appendPattern("dd.MM.yyyy HH:mm:ss")
  .parseStrict()
  .toFormatter()

val dateTimeStr = "15.07.2025 14:30:00"
val dateTime = java.time.LocalDateTime.parse(dateTimeStr, formatter)
println(dateTime)

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

kotlinString "2025-07-15T14:30:00"

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

  • метод parseLenient класса DateTimeFormatterBuilder,
    который устанавливает нестрогий режим парсинга
  • метод appendPattern класса DateTimeFormatterBuilder,
    который добавляет шаблон форматирования
  • метод toFormatter класса DateTimeFormatterBuilder,
    который создает объект DateTimeFormatter
  • класс DateTimeFormatter,
    который предоставляет методы для форматирования и парсинга дат