有没有一种有效的方法来计算 PHP 中是否有 2 个或更多日期重叠?
前任。
- 日期 1:开始 1 = 2012-03-10 / 结束 1 = 2012-05-10
- 日期 2:开始 2 = 2012-04-25 / 结束 2 = 2012-06-01
- 日期 3:开始 3 = 2012 年 7 月 15 日 / 结束 3 = 2012 年 8 月 20 日
在上面的例子中 Date1 和 Date2 重叠,Date3 是可以的。
如果您的日期是 YYYY-MM-DD 格式,那么您可以只进行字符串比较(如果使用 strtotime() 作为 unix 时间戳,它们不必是有效日期或 1970 年之后)
if( ($date1['start']>=$date2['start'] && $date1['start']<=$date2['end']) || ($date1['end']>=$date2['start'] && $date1['end']<=$date2['end']) || ($date1['start']<=$date2['start'] && $date1['end']>=$date2['end']) )
{
// overlap
}
这将检查 date1 的开始或结束是否在 date2 的开始和结束之间,或者 date1 是否围绕 date2
.
感谢@Germann-Arlington -
if($date1['start']<=$date2['end'] && $date2['start']<=$date1['end']) { // overlap }