Ну, как сказал NateB, лучшее, что вы можете получить, - это близкое приближение. Ежегодно в течение 12 месяцев он составляет 365,25 дня. Средний месяц будет иметь (365.25/12)
, или 30.4375 дней. Что заставляет нас к следующему коду:
$total_days = 14610-300;
$total_months = $total_days/30.4375;
$days_left = fmod($total_days, 30.4375);
$total_years = $total_months/12;
$months_left = fmod($total_months, 12);
echo floor($total_years)." years, ".floor($months_left)." months, ".round($days_left)." days";
Это возвращает:
39 лет, 2 месяца, 4 дня
Обратите внимание, что вместо того, чтобы округление дней вы могли бы сделать десятичную или даже выяснить, сколько часов:
echo floor($total_years)." years, ".floor($months_left)." months, ".number_format($days_left, 1)." days";
Это возвращает:
39 лет, 2 месяца, 4,4 дней
Я не думаю, что вы можете сделать лучше, чем это для того, что вам требуется.
365 * 40 = 14600, вычесть 300 = 14300 дней. Где находится '14609688'? –
В лучшем случае ваш ответ будет приблизительным, так как количество дней в каждом месяце меняется. Кроме того, за 40 лет существует всего 14600 дней. – Nate
Согласно Google, он показывает 14609.688. Я не знаю, почему я так писал. Спасибо, что исправили меня :) – iwocan