在Twig如何比较日期是否在X天内?

ILi*_*cos 8 php date symfony twig

如果与该行关联的日期少于30天,我正在使用twig标记表中的行.

Twig的文档说明要比较两个日期对象,您必须先将对象转换为日期,然后以这种方式进行比较:

{% if date(yourDate) < date(-'30days') %} ... {% endif %}

但是,它没有指定如何传递比较左侧的日期格式,我知道Twig的日期函数是某种PHP日期的包装器.

在PHP中,我通常会打电话:

$myDate = \DateTime::createFromFormat("m/d/Y", $myDate);

但在Twig显然没有办法指定原始日期的格式,以便将其转换为另一种格式,或者至少它不在文档中.

这就是我尝试过的:

{% if date(d.LastDate) > date('-30days') %}...{% endif %}

{% if d.LastDate | format("Y-m-d") > date('-30days') %}...{% endif %}

{% if date("m/d/Y", d.LastEmailSentDate) > date('-30days') %}...{% endif %}

这些条件及其变体在Symfony2中返回以下异常:

 An exception has been thrown during the rendering of a template 
("DateTimeZone::__construct(): Unknown or bad timezone (---)")
Run Code Online (Sandbox Code Playgroud)

我的控制器以格式返回日期:m/d/Y如果该日期少于30天,我只想标记该行.

Ada*_*ney 20

通过获取自Unix Epoch(PHP日期格式U)以来的秒数来比较这两个日期

{% if d.LastDate|date("U") > "-30 days"|date("U") %}
    <p>Less than 30 days old</p>
{% endif %}
Run Code Online (Sandbox Code Playgroud)


Ven*_*tra 16

Twig 1.6 支持日期比较.

{% if date(d.LastDate) > date("-30 days") %}
    <p>Less than 30 days old</p>
{% endif %}

{% if date(d.LastDate) > date("now") %}
    <p>Future date</p>
{% endif %}
Run Code Online (Sandbox Code Playgroud)

http://twig.sensiolabs.org/doc/functions/date.html