我如何从另一个LocalDate中减去一个LocalDate?

问题描述 投票:0回答:1

我想计算两个localDates之间的天数。

我是从这个答案中得到的启发。https:/stackoverflow.coma325964。 对这个问题 确定两个日期范围是否重叠。

问题是,这道题使用的是dateTime,我认为它已经过时了,所以才使用localDate。

有谁知道有类似的方法来实现上面答案中的算法,用localDate代替。

减法不允许减去另一个localDate。

我试过使用

ChoronoUnit.DAYS.between(LD1, LD2.plusDays(1)) //include the final day in the count

但有时会产生一个负数,所以算法会崩溃,因为它选择最小的数字作为重叠天数。

java datetime localdate date-comparison
1个回答
0
投票

Andreas已经在评论中给出了答案:你需要先取日差的绝对值,然后加1,使计数包含起始日期和结束日期。

public static long daysBetweenInclusive(LocalDate ld1, LocalDate ld2) {
    return Math.abs(ChronoUnit.DAYS.between(ld1, ld2)) + 1;
}

让我们试一试。

    LocalDate ld1 = LocalDate.of(2020, Month.MAY, 4);
    System.out.println(daysBetweenInclusive(ld1, LocalDate.of(2020, Month.MAY, 2)));
    System.out.println(daysBetweenInclusive(ld1, ld1));
    System.out.println(daysBetweenInclusive(ld1, LocalDate.of(2020, Month.MAY, 7)));

输出:

3
1
4
© www.soinside.com 2019 - 2024. All rights reserved.