我正在尝试为材质日期范围选取器对话框设置约束。这样做的目的是将可选择日期的范围从当天限制到一个月后的同一天。
我有一个构建约束的方法:
public CalendarConstraints.Builder setCalendarConstraints() {
CalendarConstraints.Builder constraints = new CalendarConstraints.Builder();
long min = setMinDate();
long max = setMaxDate();
constraints.setStart(min);
constraints.setEnd(max);
return constraints;
}
以下两种方法用于获取最短和最长日期:
// Maximum date for the date picker is the current date + 1 month
public long setMaxDate() {
LocalDate now = LocalDate.now();
LocalDate max;
if (now.getMonthValue() == 12) {
max = LocalDate.of(now.getYear(), 1, now.getDayOfMonth());
max.plusYears(1);
} else {
max = LocalDate.of(now.getYear(), now.getMonth().plus(1), now.getDayOfMonth());
}
return max.atStartOfDay(ZoneOffset.UTC).toInstant().toEpochMilli();
}
两周前我测试我的应用程序时,一切都正常,所以我认为问题是因为我们现在是在12月份。我试图在12月份的当前年份中添加一年,但它似乎不起作用,因为我有以下错误:
java.lang.illegalargumentexception:当前月份不能晚于结束月份
2条答案
按热度按时间wqlqzqxt1#
time类使用不可变对象。
方法
LocalDate::plusYears()
不适用于LocalDate
它自己。正如javadoc所说,它返回一个新对象,一个原始对象的副本LocalDate
对象,但添加了一年。所以你需要写:
顺便说一句,你不需要检查十二月。
不管你是否在12月都能成功。
busg9geu2#
尝试
对于max