在 PHP 中是否有计算 2 个或更多日期是否重叠的有效方法?
例。
- Date1: Start1 = 2012-03-10/End1 = 2012-05-10
- Date2: Start2 = 2012-04-25/End2 = 2012-06-01
- Date3: Start3 = 2012-07-15/End3 = 2012-08-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 }
关于php - 计算 2 个或更多日期是否重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11967634/