为什么我不能在php中成功减去两个日期时间值?

时间:2015-10-10 16:29:50

标签: php datetime date-arithmetic

我有以下代码:

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!消息,我在这里做错了什么?

1 个答案:

答案 0 :(得分:3)

您正在使用字符串进行比较和数学运算,这可能会产生问题并且无法获得正确的结果,尤其是当您将它们与整数进行比较时(并且未指定该数字实际意味着什么)。 DateTime对象允许您进行数学运算,然后将差异与持续时间进行比较。差异和持续时间都是可比较的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