date_format()
Datum und Uhrzeit sind wichtige Bestandteile vieler Programmiersprachen, einschließlich PHP. Erfahren Sie, wie Sie Datumsangaben in PHP formatieren.
date_format()
Einführung
Datums- und Zeitangaben sind in echten Anwendungen allgegenwärtig: Zeitstempel bei Blogbeiträgen, Bestelldaten in einem Online-Shop, Log-Einträge, Kalendereinträge. PHP speichert diese Zeitpunkte intern in einem für Menschen nicht lesbaren Format. Deshalb brauchen Sie eine Möglichkeit, ein Datumsobjekt in eine lesbare Zeichenkette umzuwandeln – "2023-03-03", "Friday, March 3rd" oder "03/03/2023 1:00 PM". Genau das leistet date_format().
Dieses Kapitel erklärt, was date_format() ist, seine Syntax, die wichtigsten Formatzeichen sowie Besonderheiten bei Zeitzonen und Unveränderlichkeit.
Was ist die Funktion date_format()?
Die Funktion date_format() formatiert ein DateTime-Objekt anhand eines von Ihnen angegebenen Musters als Zeichenkette. Sie ist ein prozeduraler Alias für die objektorientierte Methode DateTime::format() – beide liefern identische Ergebnisse. Verwenden Sie den Stil, der am besten zu Ihrer Codebasis passt:
<?php
$date = new DateTime('2023-03-03', new DateTimeZone('UTC'));
// These two lines are equivalent
echo date_format($date, 'Y-m-d'); // procedural
echo $date->format('Y-m-d'); // object-orientedSyntax
date_format(DateTimeInterface $object, string $format): string$object— eine Instanz vonDateTime(oderDateTimeImmutable). Dies ist das Datum, das Sie ausgeben möchten.$format— eine Zeichenkette, die aus Formatzeichen (wieY,m,d) zusammengesetzt wird. Jedes Zeichen, das kein Formatzeichen ist, wird wörtlich ausgegeben.- Rückgabewert — das formatierte Datum als Zeichenkette.
Verwendung der Funktion date_format()
Erstellen Sie zunächst ein Datumsobjekt mit der in PHP integrierten Klasse DateTime:
<?php
$date = new DateTime('2023-03-03');Dadurch wird ein Datum auf den 3. März 2023 um Mitternacht gesetzt. Standardmäßig verwendet DateTime die auf dem Server eingestellte Zeitzone – das bedeutet, dass derselbe Code auf verschiedenen Maschinen unterschiedliche Ausgaben erzeugen kann. Für vorhersehbare Ergebnisse setzen Sie die Zeitzone immer explizit:
<?php
$date = new DateTime('2023-03-03', new DateTimeZone('UTC'));Nun können Sie das Datum beliebig formatieren:
<?php
$date = new DateTime('2023-03-03', new DateTimeZone('UTC'));
echo date_format($date, 'Y-m-d');
// Output: 2023-03-03Für moderne PHP-Anwendungen empfiehlt sich DateTimeImmutable anstelle von DateTime. Methoden wie modify() verändern ein DateTime-Objekt direkt, was eine häufige Fehlerquelle ist, wenn das Objekt weitergereicht wird; DateTimeImmutable gibt stattdessen ein neues Objekt zurück und funktioniert mit date_format() auf genau dieselbe Weise:
<?php
$date = new DateTimeImmutable('2023-03-03', new DateTimeZone('UTC'));
echo date_format($date, 'd/m/Y');
// Output: 03/03/2023Häufige Datumsformate
Es gibt viele verschiedene Möglichkeiten, Datumsangaben mit der Funktion date_format() zu formatieren. Hier sind einige der gebräuchlichsten Formate:
Y-m-d: Das Datum im FormatYYYY-MM-DD.d/m/Y: Das Datum im FormatDD/MM/YYYY.m/d/Y: Das Datum im FormatMM/DD/YYYY.H:i:s: Die Uhrzeit im 24-Stunden-Format (z. B. 13:00:00).h:i:s a: Die Uhrzeit im 12-Stunden-Format (z. B. 01:00:00 am).
Formatzeichen
Zusätzlich zu den oben genannten gängigen Formaten können Sie eigene Muster aus einzelnen Formatzeichen zusammenstellen. Hier sind die am häufigsten verwendeten:
Y: Das Jahr vierstellig (z. B. 2023).y: Das Jahr zweistellig (z. B. 23).m: Der Monat als zweistellige Zahl (z. B. 03).M: Der abgekürzte Monatsname (z. B. Mar).F: Der vollständige Monatsname (z. B. March).d: Der Tag des Monats als zweistellige Zahl (z. B. 03).D: Der abgekürzte Wochentag (z. B. Fri).l: Der vollständige Wochentag (z. B. Friday).j: Der Tag des Monats ohne führende Null (z. B. 3).S: Englisches Ordnalsuffix für den Tag des Monats (z. B. st, nd, rd, th).H: Die Stunde im 24-Stunden-Format (z. B. 13).h: Die Stunde im 12-Stunden-Format (z. B. 01).i: Die Minuten als zweistellige Zahl (z. B. 05).s: Die Sekunden als zweistellige Zahl (z. B. 30).a:amoderpm.
Eine vollständige Liste aller unterstützten Zeichen finden Sie unter PHP date and time und im Kapitel date() – date_format() verwendet dieselben Zeichen.
Hier ist ein Beispiel für ein benutzerdefiniertes Datumsformat:
<?php
$date = new DateTime('2023-03-03', new DateTimeZone('UTC'));
echo date_format($date, 'l, F jS Y, h:i:s a');
// Output: Friday, March 3rd 2023, 12:00:00 amUm ein Formatzeichen wörtlich auszugeben, anstatt es zu interpretieren, maskieren Sie es mit einem Backslash:
<?php
$date = new DateTime('2023-03-03', new DateTimeZone('UTC'));
echo date_format($date, '\T\o\d\a\y \i\s l');
// Output: Today is Fridaydate_format() vs date()
Beide Funktionen formatieren Datumsangaben, nehmen aber unterschiedliche Eingaben entgegen:
date()arbeitet mit einem Unix-Zeitstempel (einer ganzen Zahl) und verwendet standardmäßig „jetzt". Verwenden Sie sie für schnelles, zeitzonenunabhängiges Formatieren:date('Y-m-d').date_format()arbeitet mit einemDateTime-Objekt, das seine eigene Zeitzone enthält und Berechnungen (Tage hinzufügen, Differenzen berechnen) vor der Formatierung unterstützt. Verwenden Sie sie, wenn Sie das Datum manipulieren müssen.
Wenn Sie eine Zeichenkette wie "3 March 2023" haben, erstellen Sie zunächst ein DateTime-Objekt – date_create_from_format() und strtotime() sind die üblichen Einstiegspunkte.
Fazit
Die Funktion date_format() in PHP bietet eine unkomplizierte Möglichkeit, ein DateTime-Objekt als lesbare Zeichenkette zu formatieren. Durch das Verständnis der verfügbaren Formatzeichen und bewährter Verfahren – die Zeitzone explizit setzen und DateTimeImmutable bevorzugen – können Sie eine genaue und vorhersehbare Datumsausgabe in jeder Umgebung sicherstellen, in der Ihr Code ausgeführt wird.