gmdate()
Die PHP-Funktion gmdate(): UTC/GMT-Datum und -Uhrzeit formatieren, Syntax, Parameter, häufige Formatzeichen, gmdate() vs. date() und ausführbare Beispiele.
Einführung
Die Funktion gmdate() formatiert einen Unix-Zeitstempel als lesbaren Datums- und Uhrzeitstring in GMT/UTC und ignoriert dabei die konfigurierte Zeitzone des Servers. Sie ist das UTC-exklusive Pendant zu date(): Beide verwenden dieselben Formatzeichen, aber gmdate() gibt die Zeit immer in Greenwich Mean Time zurück. Das macht sie zum richtigen Werkzeug, wenn Sie einen zeitzonenunabhängigen Wert benötigen — zum Protokollieren eines Ereignisses, zum Erstellen eines HTTP-Headers oder zum Speichern eines normalisierten Zeitstempels, den jeder Server und jeder Client auf dieselbe Weise interpretiert.
Dieser Leitfaden behandelt die Syntax, Parameter, die häufigsten Formatzeichen, den Unterschied zwischen gmdate() und date() sowie mehrere ausführbare Beispiele.
Syntax
gmdate(string $format, ?int $timestamp = null): stringParameter
$format(erforderlich) — Ein String aus Formatzeichen, die durch die entsprechenden Datums-/Uhrzeitwerte ersetzt werden. Jedes Zeichen, das nicht als Formatbezeichner erkannt wird, wird unverändert ausgegeben. Um einen Buchstaben literal auszugeben, der sonst interpretiert würde, maskieren Sie ihn mit einem Backslash (z. B.\T).$timestamp(optional) — Ein Unix-Zeitstempel (Sekunden seit dem 1. Januar 1970, 00:00:00 UTC). Wird er weggelassen oder istnull, wird die aktuelle Zeit verwendet.
Die Funktion gibt das formatierte Datum/die formatierte Uhrzeit als String zurück, immer in UTC ausgedrückt, unabhängig von date_default_timezone_set() oder der date.timezone-Einstellung des Servers.
Häufige Formatzeichen
Dies sind die Bezeichner, die Sie am häufigsten verwenden werden. Sie sind identisch mit denen, die von date() verwendet werden.
| Zeichen | Bedeutung | Beispiel |
|---|---|---|
Y | 4-stelliges Jahr | 2026 |
m | Monat, 2 Stellen mit führender Null | 06 |
d | Tag des Monats, 2 Stellen | 04 |
H | Stunde, 24-Stunden-Format (00–23) | 05 |
i | Minuten (00–59) | 45 |
s | Sekunden (00–59) | 57 |
D | Wochentag, Kurztext | Sun |
M | Monat, Kurztext | Mar |
T | Zeitzonenabkürzung | GMT |
U | Sekunden seit dem Unix-Epoch | 1646372757 |
Beispiele
Beispiel 1: Aktuelles GMT/UTC-Datum und aktuelle Uhrzeit ausgeben
Ohne Zeitstempel-Argument formatiert gmdate() den aktuellen Moment in UTC.
Beispiel 2: Datum und Uhrzeit mit benutzerdefinierten Bezeichnern formatieren
Ein häufiges Muster ist das Erstellen eines lesbaren, RFC-ähnlichen Zeitstempels. Da gmdate() UTC verwendet, gibt der Bezeichner T immer GMT aus.
Beispiel 3: Einen bestimmten Zeitstempel formatieren
Übergeben Sie einen Unix-Zeitstempel als zweites Argument, um einen festen Zeitpunkt anstelle von „jetzt" zu formatieren.
gmdate() vs. date()
date() formatiert einen Zeitstempel unter Verwendung der lokalen Zeitzone, die für das Skript konfiguriert ist, während gmdate() immer in UTC formatiert. Bei gleichem Zeitstempel geben beide nur dann denselben String zurück, wenn die lokale Zeitzone UTC ist.
<?php
date_default_timezone_set('America/New_York');
$timestamp = 1646372757;
echo date('Y-m-d H:i:s', $timestamp); // 2022-03-04 00:45:57 (local, UTC-5)
echo "\n";
echo gmdate('Y-m-d H:i:s', $timestamp); // 2022-03-04 05:45:57 (UTC)Verwenden Sie gmdate(), wenn der Wert zeitzonenunabhängig sein muss (Protokolle, HTTP-Date-Header, API-Antworten, Datenbankspeicherung). Verwenden Sie date(), wenn Sie einem Benutzer eine Uhrzeit in seiner lokalen Zone anzeigen.
Wann gmdate() verwenden
- Standardisierte Protokollierung — Speichern Sie Zeitstempel in UTC, damit Einträge von Servern in verschiedenen Regionen vergleichbar bleiben.
- HTTP-Header und Caching — Header wie
ExpiresundLast-Modifiedmüssen in GMT ausgedrückt werden. - APIs und Datenaustausch — Geben Sie UTC zurück, damit Clients zuverlässig in jede lokale Zone konvertieren können.
Für die vollständige objektorientierte Datumsverarbeitung mit expliziter Zeitzonenkonvertierung bevorzugen Sie die Klassen DateTime und DateTimeZone. Um die Zeitstempel zu erstellen, die Sie an gmdate() übergeben, siehe gmmktime() (UTC) und mktime() (lokale Zeit).
Fazit
Die Funktion gmdate() bietet eine unkomplizierte Möglichkeit, Datum und Uhrzeit in UTC zu formatieren, wobei dieselben Formatzeichen wie bei date() verwendet werden, aber immer auf GMT verankert sind. Dieser Leitfaden hat Syntax, Parameter, die häufigsten Formatzeichen, den Unterschied zu date() und praktische Beispiele behandelt, um Ihnen die Integration in Ihre Projekte zu erleichtern. Weitere Informationen zur Arbeit mit Datum und Uhrzeit in PHP finden Sie in der Übersicht PHP Date and Time.