检查一个日期范围是否在另一个范围内

时间:2015-06-23 13:31:51

标签: php date

例如,我有这个范围:2015-06-012015-06-03

现在我要在表单中编辑这个日期。然而,表格检查范围是否与另一个范围重叠(您不能在同一天输入两个叶子)。

现在我用它来验证它与另一个假期没有重叠:

if($startdate !== $start_db && $enddate !== $end_db){
    if($startdate <= $end_db && $enddate >= $start_db){
        $error[] = 'Leave Overlaps with another leave.';
    }
}

如果我想将范围从2015-06-01更改为2015-06-02,则会出现问题,然后它会说它重叠,因为它不知道它的相同离开。

如何检查新范围是否在DB中保存的范围内?

1 个答案:

答案 0 :(得分:1)

您必须检查每个开始和结束日期是否在另一个开始日期和结束日期之间。所以总共进行了四次比较。

if(
    // Start date is in first date range
    ($startdate >= $start_db && $startdate <= $end_db)
    ||
    // end date is in first date range
    ($enddate >= $start_db && $enddate <= $end_db)
){
     $error[] = 'Leave Overlaps with another leave.';
 }