<?php
function formatTime(int $timestamp): string {
// Текущее время
$now = time();
// Разница во времени
$difference = $now - $timestamp;
// Склоняем падежи
$declension = function (int $number, string $oneForm, string $twoFourForm, string $manyForm): string {
$lastDigit = $number % 10;
$isException = $number % 100 >= 11 && $number % 100 <= 19;
if ($lastDigit == 1 && !$isException) {
return "$number $oneForm";
} elseif ($lastDigit >= 2 && $lastDigit <= 4 && !$isException) {
return "$number $twoFourForm";
} else {
return "$number $manyForm";
}
};
// Проверяем периоды времени
if ($difference < 1) {
return 'только что';
} elseif ($difference < 60) {
return $declension($difference, 'секунду', 'секунды', 'секунд') . ' назад';
} elseif ($difference < 3600) {
return $declension(intdiv($difference, 60), 'минуту', 'минуты', 'минут') . ' назад';
} elseif ($difference < 86400) {
return $declension(intdiv($difference, 3600), 'час', 'часа', 'часов') . ' назад';
} elseif ($difference < 86400 * 2) {
return 'Вчера в ' . date('H:i', $timestamp);
} else {
return date('d.m.Y в H:i', $timestamp);
}
}