Я сделал функцию некоторое время назад.
/**
* Calculate the time between two dates
* If the second date is not specified it takes the current day
* @author rsalcedo
* @param date ("Y-m-d") (aaaa-mm-dd) $from
* @param date ("Y-m-d") (aaaa-mm-dd) $to
*/
function years_months_days($from,$to="") {
try {
$myFrom = new DateTime($from);
$myAcarreo = 0;
if ($to=="" || null)
$to=date("Y-m-d");
$myTo = new DateTime($to);
$diff_year = $myTo->format("Y") - $myFrom->format("Y") ;
$diff_mnth = $myTo->format("m") - $myFrom->format("m") ;
$diff_days = $myTo->format("d") - $myFrom->format("d") ;
if ($diff_days<0){
$diff_days = $diff_days + 30;
$myAcarreo = -1;
}
$diff_mnth = $diff_mnth + $myAcarreo;
$myAcarreo = 0;
if ($diff_mnth<0){
$diff_mnth = $diff_mnth + 12;
$myAcarreo = -1;
}
$diff_year = $diff_year + $myAcarreo;
return array($diff_year,$diff_mnth,$diff_days);
} catch (Exception $e) {
echo $e;
}
}
Вы можете использовать этот способ:
list($edad,$edadMes,$edadDias) = years_months_days("1979-09-12");
echo "$edad years, $edadMes months, $edadDias days.";
list($edad,$edadMes,$edadDias) = years_months_days("1979-09-12","2008-07-18");
echo "$edad years, $edadMes months, $edadDias days.";
Улучшения приветствуются!
Спасибо, что поделились своими знаниями. Мне пришлось изменить vars $ time1 на strtotime ($ time1) и $ time2 на strtotime ($ time2). Затем я попробовал несколько дат и получил тот же результат, что и моя функция. Еще раз спасибо! –