Friday 16 September 2016

How to calculate the difference between two dates using PHP




function DateDiff($startDate, $endDate) {
        
    $startDate = strtotime($startDate);
    $endDate = strtotime($endDate);

    if ($startDate === false || $startDate < 0 || $endDate === false || $endDate < 0 || $startDate > $endDate){
        return false;
    }

    $years = date('Y', $endDate) - date('Y', $startDate);

    $endMonth = date('m', $endDate);
    $startMonth = date('m', $startDate);

    /*** Calculate months ***/
    $months = $endMonth - $startMonth;
    if ($months <= 0) {
        $months += 12;
        $years--;
    }

    if ($years < 0){
        return false;
    }

    /*** Calculate the days  ***/
    $offsets = array();
    if ($years > 0){
        $offsets[] = $years . (($years == 1) ? ' year' : ' years');
    }
    if ($months > 0){
        $offsets[] = $months . (($months == 1) ? ' month' : ' months');
    }
    $offsets = count($offsets) > 0 ? '+' . implode(' ', $offsets) : 'now';

    $days = $endDate - strtotime($offsets, $startDate);
    $days = date('z', $days);

    return array($years, $months, $days);
}