Блог Михаила Крамера. PHP и JS
Проверка на пересечение временных промежутков
10.12.2014

Возникла задача - сравнить временные промежутки, проверить, пересекаются ли они.

После нескольких попыток сделать это логическим выражением, вспомнил, что можно найти длину пересечения отрезков на прямой. Получился элементарный алгоритм. Сначала переводим всё время в количество секунд, прошедших с эпохи UNIX, чтоб работать с временем, как с числами. А затем всё просто:

function is_intersect($t1, $t2, $t3, $t4) {
   $l = max($t1, $t3);
   $r = min($t2, $t4);
   return ($r - $l) > 0;
}
Комментарии