Функция 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 minutes read Administrator

Comments (0)

No comments yet
Only registered users can post new comments

Article multicategories

Additional categories where this article is shown as similar.

Content author

Administrator

Offline

Administrator

Last logged: 2026-09-13 14:50

  • Page published: 2025-01-22 00:20
  • Last update: 2025-01-22 00:22