<?php
function time_ago($datetime) {
$interval = date_create('now')->diff($datetime);
if ($interval->y >= 5) {return $interval->y.' лет назад';}
if ($interval->y >= 2) {return $interval->y.' года назад';}
if ($interval->y >= 1) {return $interval->y.' год назад';}
if ($interval->m >= 5) {return $interval->m.' месяцев назад';}
if ($interval->m >= 2) {return $interval->m.' месяца назад';}
if ($interval->m >= 1) {return $interval->m.' месяц назад';}
if ($interval->d >= 5) {return $interval->d.' дней назад';}
if ($interval->d >= 2) {return $interval->d.' дня назад';}
if ($interval->d >= 1) {return $interval->d.' день назад';}
if ($interval->h >= 5) {return $interval->h.' часов назад';}
if ($interval->h >= 2) {return $interval->h.' часа назад';}
if ($interval->h >= 1) {return $interval->h.' час назад';}
if ($interval->i >= 5) {return $interval->i.' минут назад';}
if ($interval->i >= 2) {return $interval->i.' минуы назад';}
if ($interval->i >= 1) {return $interval->i.' минуту назад';}
return $interval->s.' секунд';
}
$as1 = time_ago(new DateTime('2023-01-07 18:29:50')); // 29 лет
echo "$as1";
?>
function getCase ($number, $params) : string {
$cases = [2, 0, 1, 1, 1, 2];
return $number . ' ' . $params[($number % 100 > 4 && $number % 100 < 20) ? 2 : $cases[min($number % 10, 5)]];
}
echo getCase(1, ["год", "года", "лет"]); // "1 год"
echo getCase(4, ["месяц", "месяца", "месяцев"]); // "4 месяца"
echo getCase(25, ["день", "дня", "дней"]); // "25 дней"