get_time_ago()

Переводит секунды в читабельный вид прошедшего или оставшегося времени: лет, месяцев, недель, дней, часов, минут и секунд.

get_time_ago($int, $join, $slice);

$int — Целое число (секунд)
$join — разделитель (по умолчанию пробел)
$slice — Срез от наибольшего значения

Примеры использования

echo get_time_ago(123, ' '); 
// Вывод "2 минуты 3 секунды"

echo get_time_ago(99999, ', '); 
// Вывод "1 день, 3 часа, 46 минут, 39 секунд"

echo get_time_ago(99999999, ', '); 
// Вывод "3 года, 2 месяца, 2 дня, 9 часов, 46 минут, 39 секунд"

echo get_time_ago(99999999, ', ', 1); 
// Вывод "3 года"

echo get_time_ago(99999999, ' и ', 2); 
// Вывод "3 года и 2 месяца"

Эту функцию можно использовать для таймеров или для отображения прошедшего времени.

Для примера выведем сколько времени назад, пользователь был на сайте.

echo 'Последнее посещение: ' . get_time_ago(time() - $ank['date_last'], ' ') . ' назад'; 
// Вывод примерно "Последнее посещение: 5 часов 48 секунд назад" 

Код функции

function get_time_ago($time = 0, $join = ' ', $slice = false) 
{
    $output = array(); 

    if ($time > 0) {
        $years = floor($time / 31536000); 
        if ($years) {
            $time -= ($years * 31536000); 
            $output[] = des2num($years, array(__('год'), __('года'), __('лет')), false); 
        }

        $months = floor($time / 2592000); 
        if ($months) {
            $time -= ($months * 2592000); 
            $output[] = des2num($months, array(__('месяц'), __('месяца'), __('месяцев')), false); 
        }

        $weeks = floor($time / 604800); 
        if ($weeks) {
            $time -= ($weeks * 604800); 
            $output[] = des2num($weeks, array(__('неделя'), __('недели'), __('недель')), false); 
        }

        $days = floor($time / 86400); 
        if ($days) {
            $time -= ($days * 86400); 
            $output[] = des2num($days, array(__('день'), __('дня'), __('дней')), false); 
        }

        $hours = floor($time / 3600); 
        if ($hours) {
            $time -= ($hours * 3600); 
            $output[] = des2num($hours, array(__('час'), __('часа'), __('часов')), false); 
        }

        $min = floor($time / 60); 
        if ($min) {
            $time -= ($min * 60); 
            $output[] = des2num($min, array(__('минута'), __('минуты'), __('минут')), false); 
        }

        if ($time) {
            $output[] = des2num($time, array(__('секунда'), __('секунды'), __('секунд')), false); 
        }
    }

    if ($slice) {
        $output = array_slice($output, 0, $slice);
    }

    return join($join, $output); 
}