Метод rangeRefinedBy
Метод rangeRefinedBy класса ChronoField возвращает объект ValueRange, содержащий минимальное и максимальное допустимые значения для временного поля с учетом конкретного временного объекта.
В параметр мы передаем временной объект, для которого нужно определить диапазон значений.
Импорт
import java.time.temporal.ChronoField
import java.time.LocalDate
Синтаксис
fun rangeRefinedBy(temporal: TemporalAccessor): ValueRange
Пример
Получим диапазон дней для декабря 2025 года:
val date = LocalDate.of(2025, 12, 15)
val range = ChronoField.DAY_OF_MONTH.rangeRefinedBy(date)
val minDay = range.minimum
val maxDay = range.maximum
println("Days in month: from $minDay to $maxDay")
Результат выполнения кода:
String "Days in month: from 1 to 31"
Пример
Проверим диапазон дней для февраля 2025 года (не високосный):
val febDate = LocalDate.of(2025, 2, 10)
val febRange = ChronoField.DAY_OF_MONTH.rangeRefinedBy(febDate)
println("February days: ${febRange.minimum} to ${febRange.maximum}")
Результат выполнения кода:
String "February days: 1 to 28"
Пример
Получим диапазон часов для временного поля:
import java.time.LocalTime
val time = LocalTime.of(14, 30)
val hourRange = ChronoField.HOUR_OF_DAY.rangeRefinedBy(time)
println("Hour range: ${hourRange.minimum} to ${hourRange.maximum}")
Результат выполнения кода:
String "Hour range: 0 to 23"
Пример
Проверим валидность значения дня месяца:
val date = LocalDate.of(2025, 4, 1)
val range = ChronoField.DAY_OF_MONTH.rangeRefinedBy(date)
val isValid = range.isValidValue(31)
println("Is day 31 valid for April: $isValid")
Результат выполнения кода:
String "Is day 31 valid for April: false"
Смотрите также
-
метод
rangeклассаChronoField,
который возвращает общий диапазон значений поля -
класс
ValueRange,
который представляет диапазон значений -
метод
lengthOfMonthклассаLocalDate,
который возвращает количество дней в месяце -
метод
checkValidValueклассаChronoField,
который проверяет валидность значения поля