This method returns the range object which has information of the minimum and maximum valid values for the provided field.
package com.logicbig.example.localdate;
import java.time.LocalDate;
import java.time.temporal.ChronoField;
import java.time.temporal.ValueRange;
public class RangeExample {
public static void main (String... args) {
LocalDate d = LocalDate.of(2016, 12, 10);
ValueRange r = d.range(ChronoField.DAY_OF_MONTH);
System.out.printf("DAY_OF_MONTH: %s%n", r);
r = d.range(ChronoField.DAY_OF_WEEK);
System.out.printf("DAY_OF_WEEK: %s%n", r);
r = d.range(ChronoField.YEAR);
System.out.printf("YEAR: %s%n", r);
r = d.range(ChronoField.DAY_OF_YEAR);
System.out.printf("DAY_OF_YEAR: %s%n", r);
r = d.range(ChronoField.YEAR_OF_ERA);
System.out.printf("YEAR_OF_ERA: %s%n", r);
r = d.range(ChronoField.EPOCH_DAY);
System.out.printf("EPOCH_DAY: %s%n", r);
r = d.range(ChronoField.PROLEPTIC_MONTH);
System.out.printf("PROLEPTIC_MONTH: %s%n", r);
r = d.range(ChronoField.ERA);
System.out.printf("ERA: %s%n", r);
}
}
Output
DAY_OF_MONTH: 1 - 31
DAY_OF_WEEK: 1 - 7
YEAR: -999999999 - 999999999
DAY_OF_YEAR: 1 - 366
YEAR_OF_ERA: 1 - 999999999
EPOCH_DAY: -365249999634 - 365249999634
PROLEPTIC_MONTH: -11999999988 - 11999999999
ERA: 0 - 1
MINUTE_OF_HOUR is not supported by LocalDate.
package com.logicbig.example.localdate;
import java.time.LocalDate;
import java.time.temporal.ChronoField;
import java.time.temporal.ValueRange;
public class RangeExample2 {
public static void main (String... args) {
LocalDate d = LocalDate.of(2016, 12, 10);
ValueRange r = d.range(ChronoField.MINUTE_OF_HOUR);
System.out.printf("DAY_OF_MONTH: %s%n", r);
}
}
Output
Caused by: java.time.temporal.UnsupportedTemporalTypeException: Unsupported field: MinuteOfHour
at java.time.LocalDate.range(LocalDate.java:587)
at com.logicbig.example.localdate.RangeExample2.main(RangeExample2.java:17)
... 6 more
package com.logicbig.example.localdate;
import java.time.LocalDate;
import java.time.Month;
import java.time.temporal.ChronoField;
import java.time.temporal.ValueRange;
public class RangeExample3 {
public static void main (String... args) {
LocalDate d = LocalDate.of(2000, Month.FEBRUARY, 1);
ValueRange r = d.range(ChronoField.DAY_OF_MONTH);
System.out.printf("Range for DAY_OF_MONTH: %s%n", r);
if (r.isValidIntValue(29)) {
LocalDate d2 = LocalDate.of(d.getYear(), d.getMonth(), 29);
System.out.println(d2);
}
}
}
Output
Range for DAY_OF_MONTH: 1 - 29
2000-02-29