2016-05-12 131 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*/; 
}