Нет, как вычесть метку времени из текущей даты
Как я могу вычесть количество дней (timestamp|date'z') из текущего дня (date('z')) в латте? Я пытаюсь использовать var, но это не нравится форматированию (z).
1 ответ
Фильтры Латте, в отличие от вызовов функций, не являются чем-то, что может быть применено к любой части выражения - они являются только необязательной функцией макроса переменной печати.
{expression_to_be_printed|filter1|filter2|filter3}
date
фильтр в основном только звонки format
метод, чтобы вы могли использовать его напрямую:
{(new DateTime())->format('z') - $timestamp->format('z')}
Это, однако, не будет работать, если $timestamp
лежит в другой год. Чтобы это исправить, вы можете использовать DateTime
"s diff
метод. DateInterval
, возвращенный методом, может быть отформатирован с использованием format
метод, который обеспечивает разницу в количестве дней через %a
строка форматирования.
{$timestamp->diff(new DateTime())->format('%a')}
К счастью, date
Фильтр также позволяет форматировать интервалы.
{$timestamp->diff(new DateTime())|date:'%a'}
По общему признанию, это выглядит некрасиво. Лучшим способом было бы определить пользовательский фильтр, чтобы вы могли просто использовать {$post->timestamp|daysAgo}
, Посмотрите документы Латте о создании собственных фильтров.