Просмотр кода
Название: Функция форматирования времени со склонением падежей
Описание: Пример использования: echo formatTime(time()); // Только что echo formatTime(time() - 1); // 1 секунду назад echo formatTime(time() - 2); // 1 секунды назад echo formatTime(time() - 5); // 1 секунд назад Так же работает с минутами и часами. Если прошло больше 24 часов пишет Вчера в 00:00 Если более 48 часов, пишет 02.12.2024 в 00:15 На форуме просил юзер под ником MARAZM не успел ответить.
Добавил:
Jack Sparrow
Дата: 20 янв 2024, в 2:42
Комментарии (0)
Описание: Пример использования: echo formatTime(time()); // Только что echo formatTime(time() - 1); // 1 секунду назад echo formatTime(time() - 2); // 1 секунды назад echo formatTime(time() - 5); // 1 секунд назад Так же работает с минутами и часами. Если прошло больше 24 часов пишет Вчера в 00:00 Если более 48 часов, пишет 02.12.2024 в 00:15 На форуме просил юзер под ником MARAZM не успел ответить.
<?php
function formatTime(int $timestamp): string {
// Текущее время
$now = time();
// Разница во времени
$difference = $now - $timestamp;
// Константы для периодов времени в секундах
$seconds = 1;
$minutes = 60;
$hours = 3600;
$daySeconds = 86400;
// Склоняем падежи
$getWordForm = function (int $number, string $oneForm, string $twoFourForm, string $manyForm): string {
$lastDigit = $number % 10;
if ($number == 1) {
return "$number $oneForm";
} elseif ($lastDigit == 0 || $lastDigit >= 5 || in_array($number % 100, range(11, 19))) {
return "$number $manyForm";
} else {
return "$number " . (($lastDigit == 1) ? $oneForm : $twoFourForm);
}
};
// Проверяем периоды времени
if ($difference < $seconds) {
return 'только что';
} elseif ($difference < $minutes) {
return $getWordForm($difference, 'секунду', 'секунды', 'секунд') . ' назад';
} elseif ($difference < $hours) {
return $getWordForm(intdiv($difference, $minutes), 'минуту', 'минуты', 'минут') . ' назад';
} elseif ($difference < $daySeconds) {
return $getWordForm(intdiv($difference, $hours), 'час', 'часа', 'часов') . ' назад';
} elseif ($difference < $daySeconds * 2) {
return 'Вчера в ' . date('H:i', $timestamp);
} else {
return date('d.m.Y в H:i', $timestamp);
}
}
Добавил:

Дата: 20 янв 2024, в 2:42
