如题,咱们先看下面这段代码:
public class LocalDateTest {
public static void main(String[] args) {
LocalDate now = LocalDate.now();
LocalDate computedDate = now.minusMonths(1).plusMonths(1);
System.out.println(computedDate.equals(now));
}
}
本来正常情况下应该输出true
,奇怪的是却是false
!!!
分析一下原因,直接输出两个时间:
- now: 2024-10-31
- computedDate: 2024-10-30
now.minusMonths(1) 的结果是九月的最后一天,九月没有31号,所以就是2024-09-30
然后再plusMonths(1) 就是直接在月份上+1, 也就是2024-10-30了
最后得出结论是,大部分时间LocalDate减一个月后加一个月还是原来时间,但是一月总有那么一两天时间会不相等,在使用月份操作的时候还是需要注意这个问题。