我试图比较两个日期之间的差异,但结果似乎非常错误,例如以下代码:
$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-13');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days')."<br />";
$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-15');
$interval2 = $datetime1->diff($datetime2);
echo $interval2->format('%R%a days')."<br />";
if($interval == $interval2){ echo "true"; }else{echo "false"; }
返回true,但是上面你可以看到日期差异不一样,实际上echo打印+2和+4。知道如何比较 2 个日期差异吗?
编辑: datetime::diff 返回一个 dateinterval 对象,实际上它没有实现比较运算符,https://bugs.php.net/bug.php?id=49914 https://bugs.php.net/bug.php?id=49914我将使用 dateinterval vars 来检查差异,感谢您的回答
看来 DateInterval 内部没有实现比较功能。允许扩展为其预定义类定义自定义比较规则。显然,它又回到了松散的比较,即对象属于同一类。
此功能请求 https://bugs.php.net/bug.php?id=49914提供了一个补丁来添加此功能,但它似乎在任何时候都没有将其添加到源代码中。
为了解决这个问题,您可以自己比较对象的每个成员变量(年、月等),也可以将每个对象转换为数组:
if ((array) $interval == (array) $interval2) {
echo 'true';
} else {
echo 'false';
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)