getdate()
PHP getdate() erklärt: Syntax, Parameter, der zurückgegebene assoziative Array und ausführbare Beispiele für die Arbeit mit Datumswerten.
Einführung
Die PHP-Funktion getdate() zerlegt ein Datum in seine einzelnen Bestandteile — Jahr, Monat, Tag, Stunde, Wochentagsname und mehr — und gibt sie als assoziativen array zurück. Standardmäßig beschreibt sie die aktuelle lokale Zeit, aber Sie können einen beliebigen Unix-Timestamp übergeben, um stattdessen einen anderen Zeitpunkt zu beschreiben.
Ein Unix-Timestamp ist eine Ganzzahl, die die Anzahl der Sekunden seit dem 1. Januar 1970, 00:00:00 UTC (der „Unix-Epoche") zählt. Funktionen wie time(), mktime() und strtotime() erzeugen solche Timestamps, und getdate() wandelt einen davon in eine menschenlesbare Aufschlüsselung um.
Diese Seite behandelt die Syntax, jeden Schlüssel im zurückgegebenen array, ausführbare Beispiele und den Vergleich von getdate() mit der modernen DateTime-Klasse.
Syntax und Parameter
Die Syntax für getdate() lautet wie folgt:
getdate(int $timestamp = time()): arrayDer einzige, optionale Parameter $timestamp ist der zu beschreibende Unix-Timestamp. Wenn Sie ihn weglassen, verwendet getdate() standardmäßig time() — den aktuellen Zeitpunkt. Das Ergebnis spiegelt die konfigurierte Zeitzone wider (siehe date_default_timezone_set() oder die Einstellung date.timezone in php.ini). Setzen Sie daher Ihre Zeitzone, wenn Sie konsistente Ergebnisse auf verschiedenen Servern benötigen.
Rückgabewert
getdate() gibt einen assoziativen array zurück, der den angegebenen Timestamp beschreibt. Hier ist eine Übersicht aller Schlüssel:
| Schlüssel | Wert |
|---|---|
| "seconds" | Sekunden (0-59) |
| "minutes" | Minuten (0-59) |
| "hours" | Stunden (0-23) |
| "mday" | Tag des Monats (1-31) |
| "wday" | Tag der Woche (0-6, 0=Sonntag) |
| "mon" | Monat (1-12) |
| "year" | Jahr (z. B. 2023) |
| "yday" | Tag des Jahres (0-365) |
| "weekday" | Vollständiger Wochentagsname (z. B. "Monday") |
| "month" | Vollständiger Monatsname (z. B. "January") |
| "0" | Unix-Timestamp (Sekunden seit dem 1. Jan. 1970) |
| "zone" | Zeitzonenversatz in Sekunden von GMT |
Hinweis: Der Schlüssel "0" (der rohe Timestamp) ist eine Ganzzahl; die übrigen sind ebenfalls Ganzzahlen, mit Ausnahme von "weekday" und "month", die strings sind. Der Schlüssel "is_dst" wurde in PHP 7.0 als veraltet markiert und in PHP 8.0 entfernt.
Verwendung und Beispiele
Das aktuelle Datum formatieren
Rufen Sie getdate() auf, speichern Sie das Ergebnis und lesen Sie die benötigten Schlüssel aus:
Die Ausgabe sieht etwa so aus: Today is Thursday, March 3, 2023.
Einen bestimmten Timestamp beschreiben
Übergeben Sie einen Unix-Timestamp, um einen anderen Zeitpunkt als jetzt zu beschreiben. Hier verwenden wir einen festen Timestamp, damit die Ausgabe reproduzierbar ist:
<?php
// 2021-12-25 00:00:00 UTC
$date = getdate(1640390400);
echo $date['weekday'] . ", " . $date['mday'] . " " . $date['month'] . " " . $date['year'] . PHP_EOL;
echo "Day " . $date['yday'] . " of the year, hour " . $date['hours'] . PHP_EOL;Bei einer UTC-Zeitzone gibt dies Folgendes aus:
Saturday, 25 December 2021
Day 358 of the year, hour 0Zuerst einen Timestamp erstellen, dann aufschlüsseln
getdate() lässt sich gut mit mktime() kombinieren, das einen Timestamp aus einzelnen Bestandteilen aufbaut:
<?php
// mktime(hour, minute, second, month, day, year)
$timestamp = mktime(9, 30, 0, 7, 4, 2024);
$parts = getdate($timestamp);
echo "{$parts['weekday']} at {$parts['hours']}:{$parts['minutes']}";Dies gibt Thursday at 9:30 aus.
getdate() vs. die DateTime-Klasse
getdate() ist praktisch für schnelle, einmalige Abfragen, aber für alles, was Arithmetik, Vergleiche oder Zeitzonen beinhaltet, ist die objektorientierte DateTime-Klasse die moderne Wahl:
DateTimebehandelt Datumsberechnungen (->add(),->sub(),->diff()) sicher über Monats- und Jahresgrenzen hinweg.- Sie trägt eine explizite Zeitzone, wodurch Überraschungen durch den globalen Standard vermieden werden.
- Sie formatiert die Ausgabe mit
date-formatanstelle von manueller Zeichenkettenverkettung.
Verwenden Sie getdate(), wenn Sie nur einige Felder aus einem Timestamp benötigen; verwenden Sie DateTime, wenn Sie Datumswerte manipulieren oder vergleichen müssen.
Fazit
getdate() wandelt einen Unix-Timestamp in einen beschrifteten assoziativen array um und ist damit eine schnelle Möglichkeit, Jahr, Monat, Wochentag oder eine andere Komponente eines Datums zu extrahieren. Für die Anzeige und einfache Abfragen ist sie ideal; für Datumsarithmetik und zeitzonenbewusste Logik ist die DateTime-Klasse vorzuziehen.