DateTime对象声明在PHP 5.4.16中打破脚本

时间:2017-07-10 23:21:15

标签: php datetime time php-5.4 date-difference

在编辑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致命错误:未捕获的异常'异常'

带有消息:

  

' DateTime :: __ construct():依赖系统是不安全的   时区设置。您需要使用date.timezone设置或date_default_timezone_set()函数。如果您使用了这些方法中的任何一种并且仍然收到此警告,则很可能拼错了时区标识符。我们选择了时区' UTC'目前,请设置date.timezone以选择您的时区。'

1 个答案:

答案 0 :(得分:1)

您只需要检查从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课程的问题,可能是时候恢复到良好的状态了。 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";
}