我有以下代码:
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!
消息,我在这里做错了什么?
答案 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!";
}