<分区>
Possible Duplicate:
Determine Whether Two Date Ranges Overlap
我正在尝试确定 PHP 中的两个时间范围是否重叠。我一直指的是 Determine Whether Two Date Ranges Overlap然而,在我最初的尝试中,它并不适合所有情况。如果一个时间范围嵌套在另一个时间范围的开始时间和结束时间之间,则不匹配。如果它与类次的开始或结束重叠,或者如果类次完全匹配,它将按预期工作。
看看我所说的这张图片:
基本上,如果任何橙色偏移在任何地方与任何红色偏移重叠,我都会尝试隐藏它们。这是我试图用来实现这一目标的代码的相关部分。
if(($red['start'] <= $orange['end']) && ($red['end'] >= $orange['start'])) {
//Conflict handling
}
变量的值是 UNIX 时间戳。从逻辑上研究这些数字,我明白为什么上面的陈述失败了。显然,我可以通过多种方式来确定一个类次是否落在另一个类次中(这可能是我需要做的),但我希望获得更普遍的捕获。
编辑: 添加每个 block 的开始和结束时间的值。我同意我应该的工作。事实上它不是我的问题所在。我可能忽略了一些愚蠢的事情。
orange-start = 1352899800
orange-end = 1352907000
red-start = 1352923200
red-end = 1352926200
因此我的逻辑是:
if((1352923200 <= 1352907000) && (1352926200 >= 1352899800))
所以接下来,第一次比较失败了。
编辑 2: 看起来我的逻辑是合理的(我认为是这样),我的问题是与 UNIX 时间戳有关,与显示的实际时间不匹配。我感谢那些与我一起工作并帮助我发现问题所在的人。我希望我能同时接受安德烈和杰森的回答。