W3docs

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-oriented

Syntax

date_format(DateTimeInterface $object, string $format): string
  • $object — eine Instanz von DateTime (oder DateTimeImmutable). Dies ist das Datum, das Sie ausgeben möchten.
  • $format — eine Zeichenkette, die aus Formatzeichen (wie Y, 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-03

Fü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/2023

Hä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 Format YYYY-MM-DD.
  • d/m/Y: Das Datum im Format DD/MM/YYYY.
  • m/d/Y: Das Datum im Format MM/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: am oder pm.

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 am

Um 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 Friday

date_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 einem DateTime-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.

Practice

Übung
Welche Parameter werden verwendet, um ein Datum in PHP zu formatieren?
Welche Parameter werden verwendet, um ein Datum in PHP zu formatieren?
Was this page helpful?