2016-05-12 146 views
1

所以我目前正在做一个小型的PHP应用程序,我需要比较两个日期来获得它们之间的天数。 因为PHP版本是5.2,所以我很遗憾不能使用datediff()。比较两个日期结果0

我搜索了如何做,我发现了很多答案,但我总是有同样的问题。当我对日期进行区分时,我总是得到0。

function date_diff($dateFrom, $dateTo) { 
    echo $dateFrom->format('d-m-Y') . " : " . $dateTo->format('d-m-Y') . '<br/>'; 
    $diff = abs($dateTo-$dateFrom); 

    return sprintf 
    (
     "%d Days, %d Hours, %d Mins, %d Seconds", 
     intval($diff/86400), 
     intval(($diff % 86400)/3600), 
     intval(($diff/60) % 60), 
     intval($diff % 60) 
    ); 
} 

我目前使用此功能和参数在这里:

while ($donnees = mysqli_fetch_array($res)) 
     $date = new DateTime($donnees['Date']); 


    $date = date_create($date->format("Y-m-d")); 
    $today = new DateTime(); 

    echo $utilDate->date_diff($date, $today); 

我$日期和$今天变量是不是空的,所以我不明白为什么这个代码不工作。 有没有人有想法?

+0

你想使用timeStamp的秒数差异或年/月/日/小时/分钟/秒的差异? – Matt

+0

我想要天差,但我有一天,小时,分钟,秒显示 – Jikar

回答

2

我想$ dateTo和$ dateFrom都是对象,你是在$diff = abs($dateTo-$dateFrom);

做对他们减法尝试$diff = abs($dateTo->getTimestamp()-$dateFrom->getTimestamp());

+0

我不能使用它,因为PHP版本是5.2 – Jikar

+1

'format('U')'' 'getTimestamp()'然后呢? http://php.net/manual/ru/datetime.settimestamp.php似乎确实从5.3开始; U格式应该是可用的.. http://php.net/manual/ru/function.date.php –

+0

确实,格式('U')的作品,谢谢:) – Jikar

0

你想使用diff操作:

function date_diff($dateFrom, $dateTo) { 
    echo $dateFrom->format('d-m-Y') . " : " . $dateTo->format('d-m-Y') . '<br/>'; 
    $diff = $dateNow->diff($dateTo); 

    $day = $diff->format('%d'); 
    $hour = $diff->format('%h'); 
    $min = $diff->format('%i'); 
    $seconds = $diff->format('%s'); 

    return /*string involving above formats*/; 
}