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?.