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);
}