Форматируем время и склоняем падежи
Правильное отображение времени
Форматируем время и склоняем падежи <?php function formatTime(int $timestamp): string { // Текущее время // Разница во времени $difference = $now - $timestamp; // Константы для периодов времени в секундах $second = 1; $minute = 60; $hour = 3600; $day = 86400; // Склоняем падежи $declension = function (int $number, string $oneForm, string $twoFourForm, string $manyForm): string { $lastDigit = $number % 10; if ($number == 1) { return "$number $oneForm"; return "$number $manyForm"; } else { return "$number " . (($lastDigit == 1) ? $oneForm : $twoFourForm); } }; // Проверяем периоды времени if ($difference < $second) { return 'только что'; } elseif ($difference < $minute) { return $declension($difference, 'секунду', 'секунды', 'секунд') . ' назад'; } elseif ($difference < $hour) { return $declension(intdiv($difference, $minute), 'минуту', 'минуты', 'минут') . ' назад'; } elseif ($difference < $day) { return $declension(intdiv($difference, $hour), 'час', 'часа', 'часов') . ' назад'; } elseif ($difference < $day * 2) { } else { } }
Пример использования:
Это работает как для секунд так и минут и часов.
Если дата старше 24 часов, покажет что то на подобии такого:
Вчера в 00:13
Если старше 48 часов, покажет что то на подобии такого:
21.12.2024 в 12:44