首页 > 解决方案 > 检查两个 DateTime 对象是否指同一天

问题描述

我试图查看两个 DateTimeImmutable 对象是否引用同一个日历日,但我不知道为什么下面的代码不起作用。代码是PHP。

function isSameDay( $x, $y ){

        echo "<p>Comparing '" . $x->format('Y-m-d') . "' and '" . $y->format('Y-m-d'). "' returns";

        if( $x->format('Y-m-d') == $y->format('Y-m-d)') ){
                echo " true </p>";
                return true;
        }

        echo " false </p>";
        return false;
        
}

测试时,我得到以下输出,其中顶级测试用例应该返回 true:

Comparing '2021-09-06' and '2021-09-06' returns false

Comparing '2021-09-06' and '2021-10-29' returns false

Comparing '2021-09-06' and '2021-11-24' returns false

Comparing '2021-09-06' and '2021-11-26' returns false

我的理解是 DateTimeImmutable->format() 返回一个字符串,所以 if 语句只是一个字符串比较。事实上,比较为字符串的方法似乎是这样比较日期的主要方法之一。例如,我在上面使用的比较是作为这里几个问题的答案:

在 PHP 中找出 2 个日期是否在同一个月的最佳方法是什么?

检查两个 PHP 日期时间对象是否设置为相同的日期(忽略时间)

标签: phpdatetime

解决方案


叹息,没关系。有一个额外的括号$y->format('Y-m-d)')


推荐阅读