in Twig how to compare if date is within X days? in Twig how to compare if date is within X days? symfony symfony

in Twig how to compare if date is within X days?


Compare the two dates by getting the number of seconds since the Unix Epoch (PHP Date Format U)

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


Twig 1.6 supports date comparison.

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

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


Since PHP 5.3 There is a way with more accuracy.

{# endDate and startDate are strings or DateTime objects #}{% set difference = date(endDate).diff(date(startDate)) %}{% set leftDays = difference.days %}{% if leftDays > 30 %}  Less than 30 days old{% else %}  More than 30 days old{% endif %}

Explanation:

PHP 5.3 DateTime object has diff() method which return a DateInterval object with the result difference between endDate and beginDateTwig

Twig date function always return a DateTime object so we can call diff method

Finally we can access to the properties of the DateInterval object or format it with the Twig date filter.

Note: There is no need of wrap endDate or startDate with the date function if the variable is already a DateTime object.

Note2: DateTime is used here as synonym of DateTimeInterface.