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

Why does Interval.contains(Interval) need to include other.start < this.end condition?

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

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

我无法理解为什么需要第二部分 otherStart < thisEnd,我。 e.为什么不

thisStart <= otherStart && otherEnd <= thisEnd

足够了。

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

thisStart时间包含,thisEnd时间不包含

[09:00 to 10:00) contains [10:00 to 10:00) = false (otherStart equals thisEnd)

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

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


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

因为时间点,起点等于终点。

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

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