2016-05-12 2 views
1

, поэтому я в настоящее время делаю небольшое приложение php, и мне нужно сравнить две даты, чтобы получить количество дней между ними. Я печально не могу использовать lateiff(), так как версия php - 5.2.Сравнивая результаты двух дат 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()' then? http://php.net/manual/ru/datetime.settimestamp.php действительно начинается с 5.3; U-формат должен быть доступен. http://php.net/manual/ru/function.date.php –

+0

Действительно, формат ('U') работает, спасибо :) – Jikar

0

Вы хотите использовать оператор дифф:

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*/; 
} 
Смежные вопросы