otherDiffDate('2011-03-02', '2013-06-04'); // результат: 2 лет, 3 месяца и -7297 дней
function otherDiffDate($start, $end)
{ /* берём текущее время в timestamp */
$actual_time = time($end);
//echo $actual_time; // выводим на экран
//echo " - Текущее время в timestamp <br>";
//$first_flight = mktime(12, 0, 0, 4, 12, 1991); // первый вариант
$first_flight = strtotime($start); // второй вариант
/* Рассчитываем как давно в секндах произошёл полёт этого красавца */
$past_time = strtotime($end) - strtotime($start);
//echo $past_time; // выводим на экран
//echo " - Столько секунд назад состоялся первый полёт прототипа — Су-27ИБ<br>";
/* Переводим в нормальную дату */
$minutes = floor($past_time/60); // кол-во полных минут
$hours = floor($minutes/60); // кол-во полных часов
$days = floor($hours/24); // кол-во полных дней
$years_unfull = $days/365; // кол-во неполных лет
$years = floor($days/365); // кол-во полных лет
$months = floor($years_unfull*12); // кол-во полных месяцев
$m = $months - ($years*12); // месяцев сверху
$d =
$days_in_months = array(1=>31, 2=>28, 3=>31, 4=>30, 5=>31, 6=>30, 7=>31, 8=>31, 9=>30, 10=>31, 11=>30, 12=>31);
$leap_years = floor($years/4); // кол-во високосных годов
$month_number_in_first_flight = date("n", $first_flight);
/* кол-во дней прошедших в году */
$days_in_year_of_first_flight = 0;
for($i=1; $i<=12; $i++)
{
if($i >= $month_number_in_first_flight)
{
$days_in_year_of_first_flight = $days_in_year_of_first_flight + $days_in_months[$i];
}
}
$days_in_year_of_first_flight - 12; // отнимаем кол-во дней которые уже прошли
/* кол-во дней прошедших в году */
$days_in_years_interval = (date("Y") - 1991 - 1) * 365;
$days_in_actual_year = 0;
for($i=1; $i<=12; $i++)
{
if($i < date("n"))
{
$days_in_actual_year = $days_in_actual_year + $days_in_months[$i];
}
}
/* Что там у нас получилось */
$d = $days - ($days_in_actual_year + $days_in_year_of_first_flight + $days_in_years_interval) - $leap_years;
echo "$years лет, $m месяца и $days дней <br>";
}
почти работает, ток дни некоректно выдает, где косяк?
_____________
*пускает слюну, глядя на код* :)