逻辑是正确的。您提供的
$red(8-8:50pm)和
$orange(1:30-3:30pm)时间戳 不重叠 。
给定正确的值(反映您的屏幕截图),实际上可以找到重叠部分:
function show_date($value, $key) { echo $key, ': ', date('r', $value), PHP_EOL;}$red = array('start' => strtotime('today, 2pm'), 'end' => strtotime('today, 2:45pm'));$orange = array('start' => strtotime('today, 1:30pm'), 'end' => strtotime('today, 4pm'));array_walk($red, 'show_date');array_walk($orange, 'show_date');if (($red['start'] <= $orange['end']) && ($red['end'] >= $orange['start'])) { echo 'Conflict handling';}我的猜测是您遇到了时区转换问题。


![确定两个时间范围在任何一点是否重叠[重复] 确定两个时间范围在任何一点是否重叠[重复]](http://www.mshxw.com/aiimages/31/573629.png)
