Zeitangaben in Symfony mit Twig formatieren

Wie man in einer Applikation mit unterschiedlichen Zeitzonen arbeiten kann, möchte ich euch hier an einem Beispiel der Template Engine Twig zeigen. Dazu nutzen wir Twig in einem Symfony Projekt.

In einigen Fällen ist es sinnvoll, die Zeitangaben mit der entsprechenden Zeitzone zu formatieren. Ausgangspunkt ist dann immer, dass alle Zeiten in UTC gespeichert werden. Dazu sieht die Konfiguration der php.ini wie folgt aus:

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = "UTC"

Folgendendes Szenario nutze ich aktuell in verschiedenen Projekten.

  • Alle Zeitangaben werden in der Datenbank mit UTC bzw. GMT gespeichert.
  • Die Zeitangaben werden erst im letzten Schritt (Ausgabe in Templates oder Commands) mit der entsprechenden Zeitzone formatiert.

Die dafür notwendigen Schritte in einem Symfony Projekt sind denkbar einfach. Ihr fügt einfach nur folgenden Part in der Datei: /config/packages/twig.yaml hinzu:

twig:
    default_path: '%kernel.project_dir%/templates'
    date:
        timezone: 'Europe/Berlin'

Nun müsst ihr noch nach das passende Paket via Composer installieren

composer req twig/intl-extra

und danach werden die Zeitangaben im Twig Template automatisch formatiert.

{{ post.publishedAt|format_date }}

Möglich wäre auch noch eine Formatierung, abhängig von der Benutzer-Zeitzone. Wie verarbeitet/formatiert ihr solche Zeitangaben?