测试一个范围是否与另一个数字范围相交

Yah*_*din 5 php numbers pseudocode range

我有 2 个数字范围:

  • $startTime$endTime
  • $offerStartTime$offerEndTime

上述每个变量都是整数。

我想看看 的范围是否offerStartTime落在和 的offerEndTime范围内。startTimeendTime

例如,如果startTimeendTime范围为:10 到 20,则以下示例范围将返回true

  • offerStartTime: 5, offerEndTime: 11
  • offerStartTime: 5, offerEndTime: 100
  • offerStartTime: 10, offerEndTime: 15
  • offerStartTime: 10, offerEndTime: 100
  • offerStartTime: 12, offerEndTime: 15
  • offerStartTime: 19, offerEndTime: 100

将返回以下内容false

  • offerStartTime: 1, offerEndTime: 3
  • offerStartTime: 90, offerEndTime: 100
  • offerStartTime: 1, offerEndTime: 10
  • offerStartTime: 20, offerEndTime: 100

我怎样才能做到这一点?理想情况下希望用 PHP 提供答案,但伪代码就可以了。

Don*_*nic 7

如果您只是检查报价的任何部分是否与范围的任何部分重叠,这很简单。

if ($offerStartTime < $endTime && $offerEndTime > $startTime)  {
    echo 'The ranges overlap';
}
Run Code Online (Sandbox Code Playgroud)

这是一张代表重叠和非重叠的所有可能性的图片,以直观地说明其工作原理。

在此输入图像描述

根据您的输入和预期的错误输出,我使用了<>。如果您还想包含相交于一点的范围,则需要使用<=and>=来代替。