【问题标题】:Jodatime overlap method not checking equalsJodatime 重叠方法不检查等于
【发布时间】:2017-03-09 06:35:29
【问题描述】:

为了找到两个日期范围的重叠,我知道我们需要类似的东西。

(thisStart <= otherEnd ) && (otherStart <= thisEnd)

但是在the overlaps method from Joda Time里面我看到了

thisStart < otherEnd && otherStart < thisEnd

这不会涵盖某些重叠条件。是否有任何其他方法可以使用

覆盖重叠

【问题讨论】:

  • 请注意,JodaTime 间隔在开始时是包含的,在结束时是独占的,即start &lt;= x &lt; end
  • 当 thisStart = otherEnd = otherStart
  • @Jesper 我确实看到了你的答案。使用之前和之后是满足我要求的一种方法。我只是想知道为什么重叠不会这样做。

标签: java date jodatime overlap


【解决方案1】:

startend 及时指定瞬间。在 Joda(以及时间范围的任何合理实现)中,范围在右侧是半开的,即它不包括结束瞬间。

在这些条件下,Joda 库中的测试是正确的。

如果您仍然不相信,请尝试提出一个未正确检测到重叠的反例。

【讨论】:

  • 我在 cmets 中分享了一个场景。可以说这本身不是一个范围。但我相信它对于很多常见的业务场景非常有效。
  • 换句话说,加里森说半开放方法意味着开始是包容,而结束是独占。这是定义时间跨度的常见且明智的方法。
猜你喜欢
  • 2020-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-22
  • 2020-04-26
  • 1970-01-01
相关资源
最近更新 更多