Метод resolveDate
Метод resolveDate класса IsoChronology разрешает поля даты в объект ChronoLocalDate.
В первый параметр мы передаем карту полей с их значениями, во второй параметр мы передаем стиль разрешения для обработки конфликтных ситуаций.
Импорт
import java.time.chrono.IsoChronology
import java.time.temporal.ChronoField
import java.time.temporal.ResolverStyle
import java.util.HashMap
Синтаксис
fun resolveDate(fieldValues: MutableMap<TemporalField, Long>, resolverStyle: ResolverStyle): ChronoLocalDate
Пример
Разрешим поля даты для создания даты "2025-12-31":
val fieldValues = HashMap<TemporalField, Long>()
fieldValues.put(ChronoField.YEAR, 2025L)
fieldValues.put(ChronoField.MONTH_OF_YEAR, 12L)
fieldValues.put(ChronoField.DAY_OF_MONTH, 31L)
val date = IsoChronology.INSTANCE.resolveDate(fieldValues, ResolverStyle.STRICT)
println(date)
Результат выполнения кода:
String "2025-12-31"
Пример
Используем стиль ResolverStyle.SMART для автоматической корректировки невалидных дат:
val fieldValues = HashMap<TemporalField, Long>()
fieldValues.put(ChronoField.YEAR, 2025L)
fieldValues.put(ChronoField.MONTH_OF_YEAR, 2L)
fieldValues.put(ChronoField.DAY_OF_MONTH, 30L)
val date = IsoChronology.INSTANCE.resolveDate(fieldValues, ResolverStyle.SMART)
println(date)
Результат выполнения кода:
String "2025-02-28"
Пример
Проверим обработку конфликтных полей с использованием стиля ResolverStyle.LENIENT:
val fieldValues = HashMap<TemporalField, Long>()
fieldValues.put(ChronoField.YEAR, 2025L)
fieldValues.put(ChronoField.ALIGNED_WEEK_OF_YEAR, 53L)
fieldValues.put(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR, 3L)
val date = IsoChronology.INSTANCE.resolveDate(fieldValues, ResolverStyle.LENIENT)
println(date)
Результат выполнения кода:
String "2025-12-31"
Смотрите также
-
функцию
dateклассаIsoChronology,
которая создает дату из числовых компонентов -
функцию
isLeapYearклассаIsoChronology,
которая проверяет високосный год -
класс
ChronoField,
который представляет поля даты и времени