Переводит секунды в читабельный вид прошедшего или оставшегося времени: лет, месяцев, недель, дней, часов, минут и секунд.
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);
}