在编辑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以选择您的时区。'
答案 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";
}