Как же просто у них с окончаниями:
$time = $minuts == 1 ? "Posted minute ago" : "Posted $minuts minuts ago";
Сволочи((
В общем решил сделать своё, по-русски)) Опять же, от нефиг делать)) Вдрух кому пригодится))
function timeAgo($time)
{
$diff = time() - $time; // разница с настоящим временем
$seconds = $diff; // секунды
$minutes = round($diff/60); // секунд в минуте
$hours = round($diff/3600); // в часе
$days = round($diff/86400); // в дне
$weeks = round($diff/604800); // в неделе
$months = round($diff/2419200); // в месяце
$years = round($diff/29030400); // в году
$pattern = "/1([0-9])\b|(?<!1)(1)\b|(?<!1)([234])\b|(?<!1)([567890])\b/"; // разбиваю двухзначное число по окончаниям (1, 2-4, 5-19, %1, %2-4, %5-0)
if($seconds <= 60) {
preg_match($pattern, $seconds, $m);
if ($m[1] != '') { // раскидываю окончания
$suff = "";
} elseif ($m[2] != '') {
$suff = "у";
} elseif ($m[3] != '') {
$suff = "ы";
} elseif ($m[4] != '') {
$suff = "";
}
$time_ago = "$seconds секунд$suff назад"; // вывожу с окончанием… дальше все повторяется
} elseif ($minutes <= 60) {
preg_match($pattern, $minutes, $m);
if ($m[1] != '') {
$suff = "";
} elseif ($m[2] != '') {
$suff = "у";
} elseif ($m[3] != '') {
$suff = "ы";
} elseif ($m[4] != '') {
$suff = "";
}
$time_ago = "$minutes минут$suff назад";
} else if($hours <= 24) {
preg_match($pattern, $hours, $m);
if ($m[1] != '') {
$suff = "ов";
} elseif ($m[2] != '') {
$suff = "";
} elseif ($m[3] != '') {
$suff = "а";
} elseif ($m[4] != '') {
$suff = "ов";
}
$time_ago = "$hours час$suff назад";
} else if($days <= 7) {
if ($days == 1) {
$suff = "ень";
} elseif ($days == 2 || $days == 3 || $days == 4) {
$suff = "ня";
} else {
$suff = "ней";
}
$time_ago = "$days д$suff назад";
} else if($weeks <= 4) {
$suff = $weeks == 1 ? "ю" : "и";
$time_ago = "$weeks недел$suff назад";
} else if($months <= 12) {
if ($months == 1) {
$suff = "";
} elseif ($months == 2 || $months == 3 || $months == 4) {
$suff = "а";
} else {
$suff = "ев";
}
$time_ago = "$months месяц$suff назад";
} else {
preg_match($pattern, $years, $m);
if ($m[1] != '') {
$suff = "лет";
} elseif ($m[2] != '') {
$suff = "год";
} elseif ($m[3] != '') {
$suff = "года";
} elseif ($m[4] != '') {
$suff = "лет";
}
$time_ago = "$years $suff назад";
}
return $time_ago;
}
Как обычно все через жопу, но работает)) Выводит 1-60 секунд, 1-60 минут, 1-24 часов, 1-7 дней, 1-4 недель, 1-12 месяцев, 1-99 лет (на трёхзначных числах не тестил) с соответствующими окончаниями. Например:
1 секунду назад
2 секунды назад
5 часов назад
зы, не все протестил, но косяков не должно быть))