DOIFOR技术LocalDate减一个月后再加一个月还是原来时间吗?
DOIFOR技术LocalDate减一个月后再加一个月还是原来时间吗?

LocalDate减一个月后再加一个月还是原来时间吗?

技术问题处理

如题,咱们先看下面这段代码:

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减一个月后加一个月还是原来时间,但是一月总有那么一两天时间会不相等,在使用月份操作的时候还是需要注意这个问题。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注