Yve*_*eth 9 java datetime java-8 java-time
我想检查一下日期是否包含二月二十九日.
private static final MonthDay LEAP = MonthDay.of(Month.FEBRUARY, 29);
Run Code Online (Sandbox Code Playgroud)
我试过了:
if (LEAP.isAfter(beginDate) && LEAP.isBefore(maturity)) {
}
Run Code Online (Sandbox Code Playgroud)
但beginDate并maturity是从类型LocalDate
这样的方法中.isAfter,并.isBefore不能使用.
例
beginDate是15.01.2012
maturity是二○一三年一月二十〇日
在此期间,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;
}
Run Code Online (Sandbox Code Playgroud)
您是否尝试过分别将LocalDate和转换MonthDay为DateTime使用toDateTimeAtStartOfDay和toDateTime?
您需要测试当年份不是闰年时这是否会导致 true。它可能。
| 归档时间: |
|
| 查看次数: |
3214 次 |
| 最近记录: |