DateTime 对象声明在 PHP 5.4.16 上中断脚本

DateTime object declaration breaks script on PHP 5.4.16

在编辑 php 文件时它显示 DateTime 不是一个有效的方法,而且当我尝试使用它时它停止加载页面的其余部分,我是否必须实施一些东西?

我的目标是检查这些变量之间的差异是否超过 3 分钟。

我可以在几分钟内输出差异吗?

$arr["etime"] 来自 mysql 格式为 Y-m-d H:i:s 的查询。

$etime = $arr["etime"];
$datenow = date('Y-m-d H:i:s');

$datetimenow = new DateTime($datenow);
$datetimee = new DateTime($etime);
$datedifference = $datetimee->diff($datetimenow);
echo $datedifference->format("%H:%I:%S");

如果我只输入 $date = new DateTime('2000-01-01'); 之后它不会加载页面的其余部分。

如果我输入 $datetimenow = new DateTime(); 页面的其余部分将无法加载。

使用异常处理,我收到:

PHP Fatal error: Uncaught exception 'Exception'

留言:

'DateTime::__construct(): It is not safe to rely on the system's timezone settings. You are required to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone.'

您只需要检查从 diff() 生成的输出对象值:(Demo)

$etime = '2017-07-10 16:59:04';
$timezone=new DateTimeZone("Australia/Melbourne"); // declare whatever your timezone is
$datetimee=new DateTime($etime,$timezone);  // resultset datetime
$datetimenow=new DateTime("now",$timezone); // current datetime
$diff=$datetimee->diff($datetimenow);
//var_export($diff);
if($diff->i>=3 ||$diff->h>0 || $diff->d>0 || $diff->m>0 || $diff->y>0){
    echo "Difference is 3 minutes or more";
}else{
    echo "Difference is not yet 3 minutes";
}

如果您仍然遇到 DateTime class 的问题,可能是时候恢复到 good-ol' strtotime() 了。无论如何,它提供了更简单的代码:

if(strtotime('now')-strtotime($etime)>179){ // assuming now is always bigger than etime
    echo "Difference is 3 minutes or more";
}else{
    echo "Difference is not yet 3 minutes";
}