Почему Interval.contains (Interval) должен включать условие other.start <this.end? - PullRequest
0 голосов
/ 02 мая 2019

В Joda-Time реализация для Interval.contains(Interval) выглядит следующим образом:

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

Мне трудно понять, зачем нужна вторая часть, otherStart < thisEnd,то есть почему бы

thisStart <= otherStart && otherEnd <= thisEnd

не хватило бы.

Ответы [ 2 ]

2 голосов
/ 02 мая 2019

Из-за моментов времени, когда начало равно концу.

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

[00:00 -> 00:10) does not contain [00:10 -> 00:10)
2 голосов
/ 02 мая 2019

Это частный случай, поясненный в комментариях, чтобы избежать интервала 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   --+
...