// interval - h,d,m,y
function DateDiff($startDate, $endDate, $interval=false)
{
$intervals = array('y'=>0,'m'=>0,'d'=>0,'h'=>0);
$startDate = strtotime($startDate);
$endDate = strtotime($endDate);
if ($startDate === false || $startDate < 0 || $endDate === false || $endDate < 0)
return false;
if ($startDate != $endDate) {
if ($startDate > $endDate) {
$negative=true;
$ed = $endDate;
$endDate = $startDate;
$startDate = $ed;
} else {
$negative=false;
}
$intervals['y'] = date('Y', $endDate) - date('Y', $startDate);
$endMonth = date('m', $endDate);
$startMonth = date('m', $startDate);
$intervals['m'] = $endMonth - $startMonth;
if ($intervals['m'] <= 0 or $intervals['y']>0)
$intervals['m'] += 12*$intervals['y'];
$intervals['d'] = date('z', $endDate - strtotime('+' . $intervals['m'] . ' ' . (($intervals['m'] == 1) ? 'month' : 'months'), $startDate));
$intervals['h'] = floor( ($endDate-$startDate)/60 );
if ($negative) {
$intervals['h'] = -$intervals['h'];
$intervals['d'] = -$intervals['d'];
$intervals['m'] = -$intervals['m'];
$intervals['y'] = -$intervals['y'];
}
}
if ($interval)
return $intervals[$interval];
else
return array($intervals['y'], $intervals['m'], $intervals['d'], $intervals['h']);
}
$date1='2011-12-07 22:00:00';
$date2=date('Y-m-d H:i:s');
$diff = DateDiff($date1,$date2);
echo "From $date1 to now are spent ".$diff['y']." years ,".$diff['m']." months, ".$diff['d']." days and ".$diff['h']." hours.";