我想检查一个时间段是否包含2月29日这一天。
private static final MonthDay LEAP = MonthDay.of(Month.FEBRUARY, 29);
我尝试过:
if (LEAP.isAfter(beginDate) && LEAP.isBefore(maturity)) {
}
但是beginDate
和maturity
的类型是LocalDate
,因此无法使用.isAfter
和.isBefore
方法。
例子
beginDate
是15.01.2012
maturity
是20.01.2013
在这段时间内存在2月29日
解决方案
我最终找到了一个解决方案:
for (int i = beginDate.getYear(); i <= maturity.getYear(); i++) {
final Year year = Year.of(i);
if (year.isLeap()) {
if (beginDate.compareTo(LEAP.atYear(i)) <= 0 || maturity.compareTo(LEAP.atYear(i)) >= 0) {
minMaturity.plusDays(1);
}
}
return false;
}