I wrote this function a while back to calculate the difference between dates. It will return an array of all date measurements that make up the difference.
function date_difference($date1, $date2) {
    $seconds_count = array(
        'year' => (365 * 24 * 60 * 60),
        'month' => (30 * 24 * 60 * 60),
        'day' => (24 * 60 * 60),
        'hour' => (60 * 60),
        'minute' => 60
    );
    $diff = abs($date1 - $date2);
    $years = floor($diff / $seconds_count['year']);
    $diff -=  ($years * $seconds_count['year']);
    $months = floor($diff / $seconds_count['month']);
    $diff -= ($months * $seconds_count['month']);
    $days = floor($diff / $seconds_count['day']);
    $diff -= ($days * $seconds_count['day']);
    $hours = floor($diff / $seconds_count['hour']);
    $diff -= ($hours * $seconds_count['hour']);
    $minutes = floor($diff / $seconds_count['minute']);
    $diff -= ($minutes * $seconds_count['minute']);
    $seconds = $diff;
    return array('seconds' => $seconds, 'minutes' => $minutes, 'hours' => $hours, 'days' => $days, 'months' => $months, 'years' => $years);
}