in Twig how to compare if date is within X days?
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 %}
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 beginDate
Twig
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
.