WordPress: Datum richtig formatieren mit date_i18n

Wordpress: Datum einfach ins richtige Format übersetzen mit date_i18n()

Foto: T.Bortels/cpu20.de

Mit der WordPress-Funktion date_i18n() lässt sich ein Datum einfach ins richtige Format bringen. Hier die wichtigsten Parameter zur Datums-Formatierung.

Ich muss ziemlich häufig mit Terminen arbeiten – also zum Beispiel Veranstaltungen, die natürlich chronologisch sortiert ausgegeben werden sollen und die dann das Datum und die Uhrzeit der jeweiligen Veranstaltung je nach Anforderung sauber formatiert ausgeben sollen. Die Formatierung ist bei fast jedem Projekt anders, die Funktionen sind natürlich immer wieder dieselben. Trotzdem muss ich jedes mal eine kleine Recherche anstellen – und das nervt. Also habe ich mir hier einen weiteren kleinen feinen Spickzettel gebastelt, auf dem das Wichtigste zum Thema „Datum in WordPress richtig formatieren“ zusammengefasst ist.

Die WordPress-Funktion date_i18n

Die WordPress-Funktion date_i18n() funktioniert im Prinzip genau so, wie die PHP-Funktion date() – mit der hilfreichen Ausnahme, dass Wochentag und Monat gleich lokalisiert, also entsprechend der aktuell ausgewählten Sprache übersetzt werden.

Damit das reibungslos funktioniert muss das Datum zunächst mal als Datumsstempel vorliegen. Im Prinzip kann man mit Hilfe der Funktion strtotime aus vielen unterschiedlichen Datumsformaten einen Datummstempel generieren lassen. Ich benutze grundsätzlich das Format „Ymd h:i“, da das zum Beispiel bei Sortier- und Filterfunktionen im Rahmen von Datenbankabfragen (WP_Query) hilfreich ist. Bei Datumsfeldern bzw. kombinierten DatumUhrzeitFeldern, die mit ACF erstellt wurden, lässt sich das problemlos entsprechend einstellen. (Hier die Seite zur Funktion date_i18n() bei developer.wordpress.org)

Also holen wir uns erstmal das Datum aus der Datenbank:

$my_date = get_field('my_date');

Dann müssen wir das Datum in einen Datumsstempel umwandeln:

$my_date = strtotime($my_date);

Datum wie gewünscht formatieren

Dann können wir das Datum wie gewünscht formatieren.
Hier die aus meiner Sicht wichtigsten Parameter zur Formatierung:

  • d Tag des Monats mit vorangestellter Null (01, 02, 03, … )
  • j Tag des Monats ohne vorangestellte Null (1, 2, 3, …)
  • D Wochentag, abgekürzt auf 3 Lettern (Mon, Die, Mit)
  • l Wochentag voll ausgeschrieben (Montag, Dienstag, Mittwoch, …)
  • N Numerische Ausgabe des Wochentags nach ISO-8601 (1 = Montag, 2 = Dienstag, …)
  • w Numerische Darstellung eines Wochentags (0 = Montag, 1 = Dienstag, …)
  • M Name des Monats, abgekürzt auf 3 Lettern (Jan, Feb, Mrz)
  • F Name des Monats, voll ausgeschrieben (Januar, Februar, März, …)
  • m Numerische Darstellung eines Monats; mit vorangestellter Null (01, 02, 03, …)
  • n Numerische Darstellung eines Monats; ohne vorangestellte Null (1, 2, 3, …)
  • Y Vollständige viertellige Jahrszahl (1999, 2020, -0815)
  • G Stunde im 24-Stunden-Format; ohne vorangestellte Null (1, 2, 3, …)
  • h Stunde im 12-Stunden-Format; mit vorangestellter Null
  • i Minuten; mit vorangestellter Null
  • t Anzahl der Tage des angegebenen Monats (28, 29, 30, 31)

Hier alle Möglichkeiten zur Formatierung eine Datums mit oder ohne Uhrzeit auf php.net:  https://www.php.net/manual/de/datetime.format.php

In einer Zeile zusammengefasst sieht das dann zum Beispiel so aus:

$my_date_output = date_i18n('j. F Y',strtotime($my_date));

Das Ergebnis würde in diesem Fall also das Datum wie folgt formatiert ausgeben:
3. Septemper 2023

Fortsetzung folgt