[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: помогиет доделать функцию
Skesh
мне нужна разница двух дат в формате: "2 лет 5 месяцев 30 дней", в нэте нашел функцию:

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>";


}



почти работает, ток дни некоректно выдает, где косяк?

_____________
*пускает слюну, глядя на код* :)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.