dans Twig comment comparer si la date est dans les X jours?

J'utilise twig pour marquer une ligne dans une table, si la date associée à cette ligne est à moins de 30 jours.

Rameau de la documentation, pour comparer deux objets date, vous devez convertir l'objet à ce jour d'abord, et ensuite faire une comparaison de cette façon:

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

Toutefois, il ne précise pas comment passer le format de la date pour le côté gauche de la comparaison, je comprends que la Brindille est fonction de la date est une sorte de wrapper pour PHP la date du jour.

En PHP j'avais l'habitude de l'appeler:

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

mais dans Twig, apparemment, il n'y a aucun moyen de spécifier la date originale de format afin de la convertir en un autre format, ou, au moins, il n'est pas dans la documentation.

C'est ce que j'ai essayé:

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

Ces conditions et de leurs variations de retour de l'exception suivante dans Symfony2:

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

Mon contrôleur est de retour d'une date dans le format: m/d/Y et je tiens juste à signaler que la ligne si cette date est à moins de 30 jours.

Vous pouvez ajouter une fonction appelée getIsDateLessThan31DaysOld() dans votre entité, et de le faire retourner vrai ou faux. Puis appeler cette fonction dans Twig: {% if d.isDateLessThan31DaysOld %}...{% endif %}. Il devrait être plus facile d'écrire du code PHP que Twig code.
Ce ne doit pas appartenir à des modèles. Fournir votre modèle de[s] avec une méthode appropriée.

OriginalL'auteur ILikeTacos | 2013-11-04