php - 计算 2 个或更多日期是否重叠

标签 php algorithm

在 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/

相关文章:

algorithm - 解决重复 : T(n)=3T(n/2)+n

c - 3 位数字组合 0-9 算法如何工作?

php - Laravel latin5_turkish_ci 排序规则问题

php - 从 SQL 数据库中搜索并显示结果

php - PHP 中的 MySQL 访问类

c++ - 多边形轮廓上的边并不总是正确的

javascript - 给定维度上数组数据的聚合

php - 如何将 MySQL 语句 'show index' 与 PDO 一起使用?

php - PHP cURL 和 SSL 的奇怪超时

arrays - 使用给定的字典从一个字符串到达​​另一个字符串