Как отобразить «сегодня» вместо сегодняшней даты в TWIG? - PullRequest
0 голосов
/ 19 сентября 2019

Я хочу отобразить «сегодня» вместо сегодняшней даты или «вчера» вместо предыдущего дня, но я не знаю, сделать это в TWIG.

<p class="comment__date">{{ comment.createdAt|date('H:i d/m/Y') }}</p>

На данный момент яполучить только дату публикации комментария.

Идея, как я могу это сделать?Спасибо всем

Ответы [ 3 ]

1 голос
/ 19 сентября 2019

Вы можете добавить дополнительный фильтр для решения этой проблемы, например,

$twig->addFilter(new \Twig\TwigFilter('formated_date', function($date, $format = 'd-m-Y') {
    $date = $date instanceof \DateTime ? $date : new \DateTime($date);
    foreach(['today', 'yesterday',] as $state) if ($date >= new \DateTime($state)) return $state;
    return $date->format($format);
});

Затем использовать его внутри ветки, например,


{{ 'NOW' | formated_date }} {# output : today #}
{{ '19-09-2019' | formated_date }} {# output : today #}
{{ '18-09-2019' | formated_date }} {# output : yesterday #}
{{ '17-09-2019' | formated_date }} {# output : 17-09-2019 #}

1 голос
/ 23 сентября 2019

попробуйте

{% set datediff = date().diff(date(comment.createdAt)).days %}

{% if datediff > 365 %}
    {{ (datediff/365)|round(0, 'floor') }} years ago
{% elseif datediff >= 30 %}
    {{ (datediff/30)|round(0, 'floor') }} months ago
{% elseif datediff >= 7 %}
    {{ (datediff/7)|round(0, 'floor') }} weeks ago
{% elseif datediff > 1 %}
    {{ (datediff) }} days ago
{% elseif datediff %}
    yesterday
{% else %}
    today
{% endif %}

date() вернет сегодняшнюю дату
date().diff(...) вернет различие между сегодняшней датой и датой, когда созданный комментарий date().diff(...).days вернет разницу в днях

0 голосов
/ 19 сентября 2019

Вы можете сделать что-то подобное:

{% set today = date() %}
{% set yesterday = date('-1days') %}

{% if comment.createdAt|date('d/m/Y') == today|date("d/m/Y") %}
   {% set print_date = 'today' %}
{% elseif comment.createdAt|date('d/m/Y') == yesterday|date("d/m/Y") %}
   {% set print_date = 'yesterday' %}
{% else %}
   {% set print_date = comment.createdAt|date('H:i d/m/Y') %}
{% endif %}

<p class="comment__date">{{ print_date }}</p>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...