У вас есть два временных интервала.
Путcь первый - N1, Второй - N2.
Необходимо проверить на пересечения. Необходимыми и достаточными являются условия:
1. Дата начала N1 > Даты окончания N2
2. Дата окончания N1 < Даты начала N2.
На языке PHP можно реализовать класс с функционалом проверки пересечения интервалов дат следующим образом:
<?php
namespace common\helpers\DataObjects;
/**
* Class DateInterval
* @package common\helpers\DataObjects
*/
class DateInterval
{
private $start;
private $end;
/**
* DateInterval constructor.
* @param $start
* @param $end
*/
public function __construct($start, $end){
$this->start = new \DateTime($start);
$this->end = new \DateTime($end);
}
/**
* @return \DateTime
*/
public function start(){
return $this->start;
}
/**
* @return \DateTime
*/
public function end(){
return $this->end;
}
/**
* @param DateInterval $interval
* @return bool
*/
public function hasOverlap(DateInterval $interval) : bool {
return
$this->start > $interval->end() ||
$this->end < $interval->start()
? false : true;
}
}