В PHP нет функции способной посчитать количество лет/дней/часов/минут в секундах. Написать функцию, которая будет вычислять данные из секунд достаточно просто.
Функция seconds2timesнаверх
Напишем функцию array seconds2times(int $seconds), которая принимает количество секунд и возвращает массив с годами/днями/часами/минутами/секундами.
<?php
/**
* Преобразование секунд в секунды/минуты/часы/дни/года
*
* @param int $seconds - секунды для преобразования
*
* @return array $times:
* $times[0] - секунды
* $times[1] - минуты
* $times[2] - часы
* $times[3] - дни
* $times[4] - года
*
*/
function seconds2times($seconds)
{
$times = array();
// считать нули в значениях
$count_zero = false;
// количество секунд в году не учитывает високосный год
// поэтому функция считает что в году 365 дней
// секунд в минуте|часе|сутках|году
$periods = array(60, 3600, 86400, 31536000);
for ($i = 3; $i >= 0; $i--)
{
$period = floor($seconds/$periods[$i]);
if (($period > 0) || ($period == 0 && $count_zero))
{
$times[$i+1] = $period;
$seconds -= $period * $periods[$i];
$count_zero = true;
}
}
$times[0] = $seconds;
return $times;
}
?>
Примернаверх
Обработаем несколько значений, показывающих, что функция хорошо обрабатывает как пару минут, так и несколько лет.
<?php
// массив секунд
$seconds = array(5, 10, 123, 456, 789, 1234, 5678, 9012, 12345, 67890, 123456, 789012345, 7890512345);
// значения времени
$times_values = array('сек.','мин.','час.','д.','лет');
foreach ($seconds as $second)
{
echo $second . ' сек. = ';
$times = seconds2times($second);
for ($i = count($times)-1; $i >= 0; $i--)
{
echo $times[$i] . ' ' . $times_values[$i] . ' ';
}
echo '<br>';
}
?>
Результат
5 сек. = 5 сек.
10 сек. = 10 сек.
123 сек. = 2 мин. 3 сек.
456 сек. = 7 мин. 36 сек.
789 сек. = 13 мин. 9 сек.
1234 сек. = 20 мин. 34 сек.
5678 сек. = 1 час. 34 мин. 38 сек.
9012 сек. = 2 час. 30 мин. 12 сек.
12345 сек. = 3 час. 25 мин. 45 сек.
67890 сек. = 18 час. 51 мин. 30 сек.
123456 сек. = 1 д. 10 час. 17 мин. 36 сек.
789012345 сек. = 25 лет 7 д. 2 час. 5 мин. 45 сек.
7890512345 сек. = 250 лет 75 д. 8 час. 59 мин. 5 сек.