in Twig wie Sie vergleichen, wenn das Datum ist innerhalb von X Tagen?
Ich bin mit Zweig Kennzeichnen, die eine Zeile in einer Tabelle, wenn das Datum im Zusammenhang mit dieser Zeile ist weniger als 30 Tage alt sind.
Zweig der Dokumentation besagt, dass zum vergleichen zweier Datum-Objekte, müssen Sie konvertieren Sie das Objekt, um das Datum und stellen Sie einen Vergleich auf diese Weise:
{% if date(yourDate) < date(-'30days') %} ... {% endif %}
Jedoch nicht angeben, gewusst wie: übergeben Sie das Datum in das format für die linke Seite des Vergleichs, ich verstehe, dass Twig die date-Funktion ist eine Art wrapper für PHP ' s date.
In PHP würde ich in der Regel rufen:
$myDate = \DateTime::createFromFormat("m/d/Y", $myDate);
aber in Twig anscheinend gibt es keine Möglichkeit, anzugeben, wird das ursprüngliche Datum format um konvertieren Sie es in ein anderes format, oder es ist zumindest nicht in der Dokumentation.
Dies ist, was ich versucht habe:
{% 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 %}
Diese Bedingungen und deren Varianten zurück, die folgende Ausnahme in Symfony2:
An exception has been thrown during the rendering of a template
("DateTimeZone::__construct(): Unknown or bad timezone (---)")
Mein controller ist wieder in ein Datum im format: m/d/Y
und ich will einfach nur Flagge, die Zeile wenn das Datum weniger als 30 Tage alt sind.
- Sie können hinzufügen, eine Funktion, die aufgerufen wird
getIsDateLessThan31DaysOld()
in Ihre Einheit, und machen Sie es zurückgeben true, false. Dann rufen Sie diese Funktion in Twig:{% if d.isDateLessThan31DaysOld %}...{% endif %}
. Sollte es einfacher sein, PHP-code zu schreiben, als Twig-code. - Sollte dies nicht gehörenden Vorlagen. Geben Sie Ihre Modell[s] mit einer geeigneten Methode.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vergleichen Sie die beiden Termine, indem man die Anzahl der Sekunden seit der Unix-Epoche (PHP Datum Format
U
)Twig 1.6
unterstützt Datum-Vergleich.http://twig.sensiolabs.org/doc/functions/date.html
Seit PHP 5.3 gibt Es eine Möglichkeit, mit mehr Genauigkeit.
Erklärung:
PHP 5.3
DateTime
Objekt hatdiff()
Methode die Rückgabe einesDateInterval
Objekt, mit dem Ergebnis, Unterschied zwischenendDate
undbeginDate
Zweig
Zweig
date
Funktion immer wieder einDateTime
Objekt, also nennen wirdiff
MethodeEndlich können wir Zugriff auf die Eigenschaften der
DateInterval
Objekt oder formatieren Sie es mit dem Zweig filter Datum.Hinweis: Es gibt keine Notwendigkeit, wrap-startDate-endDate oder mit der Datum-Funktion, wenn die variable bereits ein DateTime-Objekt.
Note2:
DateTime
wird hier verwendet als synonym fürDateTimeInterface
.