-1

我正在寻找一种方法来比较两个时间流逝。

如果第二次失效或部分失效在第一次失效 -> 则返回 false。虽然,如果第一个或其中的一部分在第二个中 -> 也返回 false 。

我觉得我不必去上数学课...

我有

// first lapse
$a = strtotime('2016/05/04 22:50');
$b = strtotime('2016/05/20 22:15');
// second lapse
$y = strtotime('2016-05-12 12:00');
$z = strtotime('2016-05-20 10:00');

if (($y >= $a && $y <= $b) || ($z >= $a && $z <= $b)
|| ($a >= $y && $a <= $z) || ($b >= $y && $b <= $z)) 
    return false;

但它在我的大脑中安静地混淆。我不确定它会做它应该做的事情。谢谢你。

编辑

我发现我的问题与这个重复

4

1 回答 1

3

如果 $a <= $b 和 $y <= $z,计数

min($b, $z) - max($a, $y)

if < 0 - no overlap    
   = 0 - common boundary point   
   > 0 - overlap
于 2016-04-29T20:04:21.510 回答