java - 如何从另一个 LocalDate 中减去 localDate

标签 java datetime localdate date-comparison

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

我从这个答案中获得灵感:https://stackoverflow.com/a/325964对于这个问题Determine Whether Two Date Ranges Overlap

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

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

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

我尝试过使用

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

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

最佳答案

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

关于java - 如何从另一个 LocalDate 中减去 localDate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61501388/

相关文章:

Java组合框 Swing

java - 如何在没有时间的情况下将公历日期转换为伊斯兰(回历)日期?

java - 在 jTextField 中设置突出显示颜色

python - 将 timedelta 转换为 float

php - 不同的时区具有相同的时间戳?

ruby-on-rails - 从 Ruby 中的 DateTime 变量获取时间

jpa - LocalDateTime 和 JodaDate 冲突

java - 关于 TemporalAdjusters.lastDayOfMonth() 的用法

java - 该用户未与受信任的 SQL Server 连接相关联

java - map 也可以是集合吗?