Нет, как вычесть метку времени из текущей даты

Как я могу вычесть количество дней (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}, Посмотрите документы Латте о создании собственных фильтров.

Другие вопросы по тегам