我想显示“今天”而不是今天的日期,或者“昨天”而不是前一天,但是我不知道在TWIG中这样做。
<p class="comment__date">{{ comment.createdAt|date('H:i d/m/Y') }}</p>
目前,我只获得评论的发布日期。
关于我该怎么做的想法? 谢谢大家
答案 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>