Нужно добавить варианты склонения
Для русского языка это обычно по три варианта которые формируются по правилу "один ___", "два ___", "много (пять) ___"
один день
два дня
много дней
<?php
function time_elapsed_string($datetime, $full = false) {
$now = new DateTime;
$ago = new DateTime($datetime);
$diff = $now->diff($ago);
$diff->w = floor($diff->d / 7);
$diff->d -= $diff->w * 7;
//один ___, два ___, много ___
$string = array(
'y' => ['год', 'года', 'лет'],
'm' => ['месяц', 'месяца', 'месяцев'],
'w' => ['неделя', 'недели', 'недель'],
'd' => ['день', 'дня', 'дней'],
'h' => ['час', 'часа', 'часов'],
'i' => ['минута', 'минуты', 'минут'],
's' => ['секунда', 'секунды', 'секунд'],
);
foreach ($string as $k => &$v) {
if ($diff->$k) {
$v = $diff->$k . ' ' . pluralize($diff->$k, $v);
} else {
unset($string[$k]);
}
}
if (!$full) $string = array_slice($string, 0, 1);
return $string ? implode(', ', $string) . ' назад' : 'только что';
}
function pluralize($n, array $forms)
{
return
$n%10==1 && $n%100!=11
? $forms[0] :
( $n%10>=2 && $n%10<=4 && ($n%100<10 || $n%100>=20)
?$forms[1] : $forms[2]
);
}
?>
<?php echo time_elapsed_string('2019-04-22 00:22:35'); ?>