【发布时间】:2020-04-29 12:03:24
【问题描述】:
我正在尝试计算 2 个 localDates 之间的天数
我从这个答案中获得灵感:https://stackoverflow.com/a/325964 这个问题Determine Whether Two Date Ranges Overlap
问题是,这个问题使用了我认为已经过时的 dateTime,因此使用 localDate 的原因。
有没有人知道使用 localDate 来实现上述答案中算法的类似方法。
减法不允许减去另一个localDate。
我尝试过使用
ChoronoUnit.DAYS.between(LD1, LD2.plusDays(1)) //include the final day in the count
但有时这会产生负数,因此算法会中断,因为它选择最小的数字作为重叠天数
【问题讨论】:
-
什么是“答案”?
-
代码示例似乎是正确的。 “算法失败”到底是什么意思?你的问题有点不清楚:-)
-
我已经编辑了问题
-
如果
ChronoUnit.DAYS.between(ld1, ld2)返回一个负数,那么ld1.isAfter(ld2)必须返回true。您可以通过始终将未来日期作为第二个参数来轻松停止获得负数,或者更简单,只需使用days = Math.abs(days)。 -
@3rdRockSoftware 在链接的答案中,解释一下,它说:“如果开始和结束日期可能有问题,...使用
Min()和Max()” i>,如ChoronoUnit.DAYS.between(Math.min(LD1, LD2), Math.max(LD1, LD2)) + 1。 Slaw's comment 是更好的解决方案:Math.abs(ChoronoUnit.DAYS.between(LD1, LD2)) + 1
标签: java datetime localdate date-comparison