为什么我无法成功减去 php 中的两个日期时间值?

Why I can't successfully subtract two datetime values in php?

我有以下代码:

echo "first row " . $firstRow["begin_date"];
echo " super beg " . $superbegintime; 
echo " duration " . $duration;
if(($firstRow["begin_date"] - $superbegintime) >= $duration)
{
    echo "it works!";
}

$firstRow["begin_date"] 是从数据库

中获取的 DATETIME 类型字段

$superbegintime创建如下:

$date = new DateTime();
$superbegintime= $date->add(DateInterval::createFromDateString('10 minutes'))->format('Y-m-d H:i:s');

$duration 是一个应该表示秒数的字段 $duration = 15;

我无法输入 if 语句并打印 it works! 消息,我在这里做错了什么?

您正在对字符串进行比较和计算,这可能会产生问题并且无法得到正确的结果,尤其是当您将它们与整数进行比较时(并且没有指定该数字的实际含义)。 DateTime 对象允许您进行数学运算,然后将差异与持续时间进行比较。 difference 和 duration 都是 DateInterval 对象,具有可比性。

$beginDate      = new DateTime($firstRow["begin_date"]);
$superbegintime = new DateTime($superbegintime); 
$duration       = DateInterval::createFromDateString('15 seconds');
$diff = $beginDate->diff($superbegintime);

if($diff >= $duration)
{
    echo "it works!";
}

Demo