如何从另一个 LocalDate 中减去一个 localDate
How do I subtract a localDate from another LocalDate
我正在尝试计算 2 个 localDates 之间的天数
我从这个答案中得到启发: to this question 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
我正在尝试计算 2 个 localDates 之间的天数
我从这个答案中得到启发: to this question 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