Возникла задача - сравнить временные промежутки, проверить, пересекаются ли они.
После нескольких попыток сделать это логическим выражением, вспомнил, что можно найти длину пересечения отрезков на прямой. Получился элементарный алгоритм. Сначала переводим всё время в количество секунд, прошедших с эпохи UNIX, чтоб работать с временем, как с числами. А затем всё просто:
function is_intersect($t1, $t2, $t3, $t4) {
$l = max($t1, $t3);
$r = min($t2, $t4);
return ($r - $l) > 0;
}