有没有一种有效的方法来计算PHP中是否有2个或更多日期重叠?
实施例。
在上面的示例中,Date1和Date2重叠,Date3正常。
答案 0 :(得分:2)
如果您的日期是YYYY-MM-DD格式,那么您可以进行字符串比较(如果使用strtotime()进行unix时间戳,则它们不必是1970年后的OR有效日期)
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的开始和结束之间2或者date1是否包含date2
感谢@ Germann-Arlington -
if($date1['start']<=$date2['end'] && $date2['start']<=$date1['end']) { // overlap }
答案 1 :(得分:1)
如果您有大量日期(我理解问题)您可以使用interval tree,并将日期转换为整数(可以使用unix time)