Запись на курсы по HTML, CSS, JavaScript, PHP, Python, фреймворкам и CMS,
а также: помощь в поиске работы и заказов, стажировка на реальных проектах→
1021 of 1310 menu
Бесплатный курс по выкладке сайтов на хостинг. Разбираем все нюансы! Начало 14 октября. Жми для записи!

Метод parseLenient

Метод parseLenient класса DateTimeFormatterBuilder переключает парсер в лояльный режим, который позволяет обрабатывать даты с некорректными значениями (например, 31 апреля или 30 февраля). В этом режиме значения автоматически нормализуются (например, 31 апреля становится 1 мая).

Импорт

import java.time.format.DateTimeFormatterBuilder

Синтаксис

fun parseLenient(): DateTimeFormatterBuilder

Пример

Создадим форматтер с лояльным парсингом для обработки некорректной даты "2025-04-31":

val formatter = DateTimeFormatterBuilder() .appendPattern("yyyy-MM-dd") .parseLenient() .toFormatter() val dateStr = "2025-04-31" val date = java.time.LocalDate.parse(dateStr, formatter) println(date)

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

String "2025-05-01"

Пример

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

// Строгий парсинг (по умолчанию) val strictFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd") // Лояльный парсинг val lenientFormatter = DateTimeFormatterBuilder() .appendPattern("yyyy-MM-dd") .parseLenient() .toFormatter() val invalidDateStr = "2025-02-30" try { val strictDate = java.time.LocalDate.parse(invalidDateStr, strictFormatter) println("Strict: $strictDate") } catch (e: Exception) { println("Strict parsing failed: ${e.message}") } try { val lenientDate = java.time.LocalDate.parse(invalidDateStr, lenientFormatter) println("Lenient: $lenientDate") } catch (e: Exception) { println("Lenient parsing failed: ${e.message}") }

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

String "Strict parsing failed: Text '2025-02-30' could not be parsed: Invalid date 'FEBRUARY 30'" String "Lenient: 2025-03-02"

Пример

Используем лояльный парсинг для времени с некорректными значениями:

val timeFormatter = DateTimeFormatterBuilder() .appendPattern("HH:mm:ss") .parseLenient() .toFormatter() val timeStr = "25:70:80" val time = java.time.LocalTime.parse(timeStr, timeFormatter) println(time)

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

String "02:11:20"

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

  • функцию ofPattern класса DateTimeFormatter,
    которая создает форматтер для парсинга дат
  • функцию parse класса LocalDate,
    которая преобразует строку в дату
  • метод parseStrict класса DateTimeFormatterBuilder,
    который включает строгий режим парсинга
  • класс DateTimeFormatterBuilder,
    который предоставляет методы для построения форматтеров