为什么Interval.contains(Interval)需要包括other.start <this.end条件?

时间:2019-05-02 08:37:20

标签: algorithm jodatime intervals

在Joda-Time中,Interval.contains(Interval)的实现如下所示:

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

我很难理解为什么需要第二部分otherStart < thisEnd,即。 e。为什么不

thisStart <= otherStart && otherEnd <= thisEnd

足够。

2 个答案:

答案 0 :(得分:2)

这是注释中解释的一种特殊情况,以避免other间隔持续时间为0(开始==结束)位于thisEnd

thisStart时间被包括在内,thisEnd时间被排除了

  

[09:00至10:00)包含[10:00至10:00)= false(otherStart等于thisEnd)

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

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


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

答案 1 :(得分:2)

由于时间点,开始等于结束。

[00:00 -> 00:10) does     contain [00:00 -> 00:00)

[00:00 -> 00:10) does not contain [00:10 -> 00:10)