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

Метод withResolverStyle

Метод withResolverStyle класса DateTimeFormatter устанавливает стиль разрешения, который определяет, как будут обрабатываться противоречивые значения даты и времени при парсинге. В параметр мы передаем один из трех стилей разрешения: ResolverStyle.STRICT, ResolverStyle.SMART или ResolverStyle.LENIENT.

Импорт

import java.time.format.DateTimeFormatter import java.time.format.ResolverStyle

Синтаксис

fun withResolverStyle(resolverStyle: ResolverStyle): DateTimeFormatter

Пример

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

val formatter = DateTimeFormatter.ofPattern("MM-dd-yyyy") .withResolverStyle(ResolverStyle.STRICT) val dateStr = "02-29-2025" val date = java.time.LocalDate.parse(dateStr, formatter) println(date)

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

Exception: DateTimeParseException

Пример

Используем лояльный стиль разрешения для обработки несуществующих дат:

val formatter = DateTimeFormatter.ofPattern("MM-dd-yyyy") .withResolverStyle(ResolverStyle.LENIENT) val dateStr = "02-29-2025" val date = java.time.LocalDate.parse(dateStr, formatter) println(date)

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

String "2025-03-01"

Пример

Сравним разные стили разрешения для одной и той же даты:

val strictFormatter = DateTimeFormatter.ofPattern("MM-dd-yyyy") .withResolverStyle(ResolverStyle.STRICT) val smartFormatter = DateTimeFormatter.ofPattern("MM-dd-yyyy") .withResolverStyle(ResolverStyle.SMART) val lenientFormatter = DateTimeFormatter.ofPattern("MM-dd-yyyy") .withResolverStyle(ResolverStyle.LENIENT) val dateStr = "04-31-2025" try { val strictDate = java.time.LocalDate.parse(dateStr, strictFormatter) println("STRICT: $strictDate") } catch (e: Exception) { println("STRICT: DateTimeParseException") } try { val smartDate = java.time.LocalDate.parse(dateStr, smartFormatter) println("SMART: $smartDate") } catch (e: Exception) { println("SMART: DateTimeParseException") } try { val lenientDate = java.time.LocalDate.parse(dateStr, lenientFormatter) println("LENIENT: $lenientDate") } catch (e: Exception) { println("LENIENT: DateTimeParseException") }

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

String "STRICT: DateTimeParseException" String "SMART: 2025-04-30" String "LENIENT: 2025-05-01"

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

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