在joda time中,Interval.contains(Interval)的实现如下所示:

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

我很难理解为什么需要第二部分
thisStart <= otherStart && otherEnd <= thisEnd

够了。

最佳答案

这是注释中解释的一个特殊情况,以避免other间隔在thisEnd处有0个持续时间(start==end)。
thisStart包括时间,thisEnd不包括时间
[09:00到10:00)包含[10:00到10:00)=false(otherstart等于thisend)

    this                 --+
|----------|               +--- not contained
           | <-- other   --+

    this                 --+
|----------|               +--- contained
        |    <-- other   --+


    this                 --+
|----------|               +--- contained
|            <-- other   --+

关于algorithm - 为什么Interval.contains(Interval)需要包括other.start <this.end条件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55948573/

10-12 19:38