如何在TWIG中显示“今天”而不是今天的日期?

时间:2019-09-19 10:06:58

标签: date twig

我想显示“今天”而不是今天的日期,或者“昨天”而不是前一天,但是我不知道在TWIG中这样做。

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

目前,我只获得评论的发布日期。

关于我该怎么做的想法? 谢谢大家

3 个答案:

答案 0 :(得分:1)

您可以添加一个额外的过滤器来解决此问题,例如

$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 :(得分:1)

尝试

{% 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(...)将返回dietference beetwen今天的日期和创建评论的日期 date().diff(...).days将在几天后返回差额

答案 2 :(得分:0)

您可以执行以下操作:

{% 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>