PHP DateTime类在$ obj-> diff()上产生错误为什么?
问题描述:
Why the following code:
function dDiff($start, $end = false)
{
if(!$end)
{
$end = time();
}
if(!is_numeric($start) || !is_numeric($end))
{
return false;
}
$start = date('Y-m-d H:i:s',$start);
$end = date('Y-m-d H:i:s',$end);
$d_start = new DateTime($start);
$d_end = new DateTime($end);
$diff = $d_start->diff($d_end);
return array(
'year' => $diff->format('%y'),
'month' => $diff->format('%m'),
'day' => $diff->format('%d'),
'hour' => $diff->format('%h'),
'min' => $diff->format('%i'),
'sec' => $diff->format('%s')
);
}
produce that error :
Fatal error: Call to undefined method DateTime::diff()
为什么使用以下代码: p>
function dDiff($ start ,$ end = false)
{
if if(!$ end)
{
$ end = time();
}
if(!is_numeric($ start)||!is_numeric($ 结束))
{
返回false;
}
$ start = date('Ymd H:i:s',$ start);
$ end = date('Y-m -d H:i:s',$ end);
$ d_start = new DateTime($ start);
$ d_end = new DateTime($ end);
$ diff = $ d_start-> diff($ d_end);
返回数组(
' 年'=> $ diff->格式('%y'),
'月'=> $ diff->格式('%m'),
'天'=> $ diff- >格式('%d'),
'小时'=> $ diff->格式('%h'),
'min'=> $ diff->格式('%i' ),
'sec'=> $ diff-> format('%s')
);
}
code> pre>
产生该错误: p>
致命错误:调用未定义的方法DateTime :: diff()
code> pre>
div>
答
You get the error because the diff()
function does not exists on the DateTime
object. That's the case with PHP versions below 5.3 In the manual that's written as
(PHP 5 >= 5.3.0)
on top of each function page.
You either need to make PHP 5.3 a requirement for your plugin and/or switch to an alternative routine for that part. See How to calculate the difference between two dates using PHP?.