如何从另一个 LocalDate 中减去 localDate

3rd*_*are 2 java datetime date-comparison localdate

我正在尝试计算 2 个 localDate 之间的天数

我从这个答案中获得灵感: https: //stackoverflow.com/a/325964这个问题确定两个日期范围是否重叠

问题是,这个问题使用了 dateTime,我认为它已经过时了,因此使用 localDate 的原因。

有谁知道使用 localDate 来实现上述答案中的算法的类似方法。

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

我尝试过使用

ChoronoUnit.DAYS.between(LD1, LD2.plusDays(1)) //include the final day in the count
Run Code Online (Sandbox Code Playgroud)

但有时会产生负数,因此算法会失败,因为它选择最小的数字作为天数重叠

Ole*_*.V. 5

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

\n\n
public static long daysBetweenInclusive(LocalDate ld1, LocalDate ld2) {\n    return Math.abs(ChronoUnit.DAYS.between(ld1, ld2)) + 1;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

让\xe2\x80\x99s 尝试一下:

\n\n
    LocalDate ld1 = LocalDate.of(2020, Month.MAY, 4);\n    System.out.println(daysBetweenInclusive(ld1, LocalDate.of(2020, Month.MAY, 2)));\n    System.out.println(daysBetweenInclusive(ld1, ld1));\n    System.out.println(daysBetweenInclusive(ld1, LocalDate.of(2020, Month.MAY, 7)));\n
Run Code Online (Sandbox Code Playgroud)\n\n

输出:

\n\n
\n
3\n1\n4\n
Run Code Online (Sandbox Code Playgroud)\n
\n