Функция, которая стильно модно и по молодежному считает разницу между двумя датами
function calcPeriod($date_start, $date_finish) {
$st = explode('-', date('d-m-Y-H-i-s', $date_start));
$fin = explode('-', date('d-m-Y-H-i-s', $date_finish));
if (($seconds = $fin[5] - $st[5]) < 0) {
$fin[4]--;
$seconds += 60;
}
if (($minutes = $fin[4] - $st[4]) < 0) {
$fin[3]--;
$minutes += 60;
}
if (($hours = $fin[3] - $st[3]) < 0) {
$fin[0]--;
$hours += 24;
}
if (($days = $fin[0] - $st[0]) < 0) {
$fin[1]--;
$days = date('t', mktime(1, 0, 0, $st[1], $st[0], $st[2])) - $st[0] + $fin[0];
}
if (($months = $fin[1] - $st[1]) < 0) {
$fin[2]--;
$months += 12;
}
$years = $fin[2] - $st[2];
return array($seconds, $minutes, $hours, $days, $months, $years);
}
Вроде все очень просто и понятно.