Функция cot_build_timeago в Cotonti

Функция cot_build_timeago() предназначена для вычисления временного интервала между текущим временем и переданным временем (в формате timestamp). Она возвращает строку с читаемым описанием разницы во времени или строку "Just now" (если разница меньше определенного порога, заданного параметром $recently).

/**
 * Returns readable time difference or 'Just now'.
 *
 * @param int $time Timestamp
 * @param int $recently Seconds during which to show 'Just now'
 * @return string
 */
function cot_build_timeago($time, $recently = 60)
{
    global $L, $sys;
    if ($sys['now'] - $time < $recently)
    {
        return $L['JustNow'];
    }
    return cot_build_timegap($time) . ' ' . $L['Ago'];
}

 

 

Подробное разъяснение функции:
 

function cot_build_timeago($time, $recently = 60)
{
    global $L, $sys;

    // Если разница между текущим временем и переданным временем меньше, чем $recently секунд
    if ($sys['now'] - $time < $recently)
    {
        // Возвращаем "Just now" (только что)
        return $L['JustNow'];
    }
    
    // Иначе возвращаем временной промежуток с добавлением 'Ago' (назад)
    return cot_build_timegap($time) . ' ' . $L['Ago'];
}


Разбор условий:


Первое условие (if ($sys['now'] - $time < $recently)):

Параметры:

$sys['now'] — текущее время в формате timestamp.
$time — время, переданное в функцию.
$recently — временной интервал, в течение которого будет показываться "Just now" (по умолчанию это 60 секунд).
Логика: если разница между текущим временем и переданным временем меньше, чем значение в $recently (по умолчанию 60 секунд), возвращается строка "Just now".

Возвращаемое значение:

Если время прошло больше, чем значение в $recently, вызывается функция cot_build_timegap($time), которая формирует человекочитаемую строку с временем (например, "2 hours", "3 days").
К этому значению добавляется строка "Ago", которая берется из локализации (обычно это "назад" или "ago" в зависимости от языка).

Примеры в контексте Cotonti:


Пример 1:

'FORUMS_TOPICS_ROW_TIMEAGO' => cot_build_timeago($row['ft_updated']),


В этом примере используется функция cot_build_timeago(), чтобы отобразить разницу во времени для каждого форума, основанную на метке времени ft_updated из базы данных. Это может быть время последнего обновления темы на форуме.

Пример 2:

$updated = sprintf(Cot::$L['forums_mergetime'], cot_build_timegap($gap_base, Cot::$sys['now']));

Здесь cot_build_timegap() используется для вычисления разницы между двумя временными метками ($gap_base и текущим временем). Затем результат вставляется в строку локализации forums_mergetime, которая, вероятно, отображает форматированное сообщение типа "Обновлено X времени назад".

Примечания:

Функция cot_build_timeago() полезна для отображения времени, прошедшего с какого-то события, в читаемом виде, например, "5 минут назад", "3 дня назад", или "Just now" для очень свежих событий.
При необходимости можно настроить период, в который будет показываться "Just now", передавая нужное значение в параметре $recently.

2 минут чтения Administrator

Комментарии (0)

Комментарии отсутствуют
Добавление комментариев доступно только зарегистрированным пользователям

Автор контента

Administrator

Оффлайн

Administrator

Последняя авторизация: 03.08.2026 13:51

  • Страница размещена: 22.01.2025 00:20
  • Последнее обновление: 22.01.2025 00:22