PHP-重叠不涵盖一种情况

问题描述

我正在编写PHP条件以防止日期时间重叠。我测试了其中的每一个,除了这一个以外,它们似乎都可以正常工作:

        _____________________________________
       |      ______________________         |
       |     |                      |        |
 formStart.  dbStart.              dbEnd.    formEnd

formStart和fromEnd是我在表单中输入的日期时间,而dbStart和dbEnd是数据库中存在的日期时间。

我尝试过这种情况:

if (($formStart < $dbStart) && ($dbEnd < $formEnd)) {
        echo 'Overlap!';
    } else {
        echo 'No overalp';

我还认为添加等号(==)会很明智,因为当它们都在同一日期时,它们是重叠的吗?

谁能说出这种情况的原因,因为我不工作?

---------更新------------

由于此处提供的建议不起作用,因此我用建议的大小写更新了代码并发布了整个方法

        if (($formStart < $dbStart) && ($dbStart < $formEnd)) {
            return false; 

         // formEnd is between Start Date and End Date!

        } elseif (($formStart < $dbEnd) && ($dbEnd <= $formEnd)) {
            return false; 

         // formStart is between Start Date and End Date!

        } elseif (($dbStart <= $formStart) && ($dbEnd > $formEnd)) {
            return false;

         // formStart and formEnd are between Start Date and End Date!

        } elseif (($formStart < $dbEnd && ($formEnd > $dbStart)) {
            return false; // example I added
     else {
            return true;
        } 

解决方法

您的逻辑中有一个小错误,应该是

if (($formStart < $dbEnd) && ($formEnd > $dbStart)) {
        echo 'Overlap!';
    } else {
        echo 'No overalp';

这将覆盖部分和全部重叠。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...