gpt4 book ai didi

java - 如何有效地检查日期范围是否不重叠?

转载 作者:行者123 更新时间:2023-12-01 18:08:02 24 4
gpt4 key购买 nike

所以基本上我正在寻找一种更好的方法来防止日期相互重叠。因此,如果我已经在 2016 年 9 月 10 日到 2016 年 9 月 15 日之间创建了一个事件,那么我创建的下一个事件就不能在这两个日期之间。

这里的代码是我到目前为止所拥有的,但我认为它很困惑,我什至不太确定它是否正常工作。

(fromDate.isAfter(element.getFromDate()) && fromDate.isBefore(element.getToDate())
|| toDate.isAfter(element.getFromDate()) && toDate.isBefore(element.getToDate())
|| fromDate.isBefore(element.getFromDate()) && toDate.isAfter(element.getToDate())
|| fromDate.isEqual(element.getFromDate()) && toDate.isEqual(element.getToDate())
|| fromDate.isBefore(element.getFromDate()) && toDate.isEqual(element.getToDate())
|| fromDate.isEqual(element.getFromDate()) && toDate.isAfter(element.getToDate()))

我正在使用 java.time.LocalDate

最佳答案

这很困惑,可以大大简化。以下是两个日期范围重叠的所有可能性。称它们为“a,b”和“x,y”:

              x     y      
-------------------
a b no overlap
a b no overlap

a b full overlap
a b full overlap
a b partial (b = x)
a b partial
a b partial (b = y)
a b partial
a b partial (a = x)
a b partial
a b partial (a = y)

由于您只对重叠情况感兴趣,因此您可以简单地反转逻辑并检查是否没有重叠,这可以归结为:

if (!((b < x) || (a > y)))

关于java - 如何有效地检查日期范围是否不重叠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34774858/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com