Signatur
Beschreibung
date_default_timezone_get() liefert den Bezeichner der Standard-Zeitzone, die PHP für alle datums- und zeitbezogenen Funktionen heranzieht. Die Funktion ermittelt die Zeitzone in folgender Priorität: Zunächst wird geprüft, ob die Zeitzone per date_default_timezone_set() programmatisch gesetzt wurde; danach wird die INI-Direktive date.timezone ausgewertet; ist auch diese nicht gesetzt, fällt PHP auf UTC zurück und gibt eine Warnung aus.
Typische Einsatzfälle sind das Überprüfen der aktiven Zeitzone vor zeitzonensensitiven Berechnungen, das Zwischenspeichern der aktuellen Zeitzone vor einem temporären Wechsel sowie die Ausgabe in Logs oder Debug-Meldungen. Der Rückgabewert ist stets ein gültiger Zeitzonenbezeichner gemäß der IANA-Zeitzonendatenbank, z. B. Europe/Berlin oder UTC.
In Webanwendungen, die mehrere Benutzerregionen bedienen, empfiehlt es sich, die Zeitzone pro Request explizit zu setzen und vorher die bestehende Zeitzone mit dieser Funktion zu sichern, um sie anschließend wiederherstellen zu können. So bleibt das Zeitzonensystem konsistent, ohne globale Seiteneffekte zu riskieren.
Rückgabewert
Europe/Berlin, America/New_York oder UTC. Die Funktion gibt immer einen String zurück; ist keine Zeitzone explizit gesetzt, wird UTC zurückgegeben.Beispiele
Aktuelle Standard-Zeitzone ausgeben
<?php
// INI date.timezone = "Europe/Berlin" oder vorher gesetzt
date_default_timezone_set('Europe/Berlin');
$tz = date_default_timezone_get();
echo 'Aktuelle Zeitzone: ' . $tz;
// Ausgabe: Aktuelle Zeitzone: Europe/Berlin
echo PHP_EOL . 'Aktuelle Zeit: ' . date('Y-m-d H:i:s');
Zeitzone temporär wechseln und danach wiederherstellen
<?php
// Aktuelle Zeitzone sichern
$originalTz = date_default_timezone_get();
echo 'Ursprüngliche Zeitzone: ' . $originalTz . PHP_EOL;
// Temporär auf New York wechseln
date_default_timezone_set('America/New_York');
echo 'Temporäre Zeitzone: ' . date_default_timezone_get() . PHP_EOL;
echo 'Zeit in New York: ' . date('Y-m-d H:i:s') . PHP_EOL;
// Ursprüngliche Zeitzone wiederherstellen
date_default_timezone_set($originalTz);
echo 'Wiederhergestellte Zeitzone: ' . date_default_timezone_get() . PHP_EOL;
Zeitzone in einer Klassen-Methode prüfen
<?php
function getLocalizedTime(string $timezone): string {
$originalTz = date_default_timezone_get();
if (!in_array($timezone, timezone_identifiers_list())) {
throw new InvalidArgumentException('Ungültige Zeitzone: ' . $timezone);
}
date_default_timezone_set($timezone);
$time = date('Y-m-d H:i:s T');
date_default_timezone_set($originalTz); // Wiederherstellen
return $time;
}
echo getLocalizedTime('Asia/Tokyo') . PHP_EOL;
echo 'Zeitzone nach Aufruf: ' . date_default_timezone_get();
// Wichtig · Fallstricke
Warnung bei fehlender Konfiguration: Ist weder date.timezone in der php.ini gesetzt noch wurde date_default_timezone_set() aufgerufen, gibt PHP eine E_NOTICE- bzw. E_WARNING-Meldung aus und fällt auf UTC zurück. Es empfiehlt sich daher, date.timezone in der php.ini stets explizit zu konfigurieren.
Bevorzugte Alternative: Für zeitzonensensitive Anwendungen wird empfohlen, DateTimeImmutable oder DateTime in Kombination mit DateTimeZone zu verwenden, da diese Objekte die Zeitzone direkt kapseln und keine globalen Seiteneffekte verursachen.
CLI vs. Web: In CLI-Skripten kann die Systemzeitzone von der in der php.ini konfigurierten abweichen. Das Ergebnis von date_default_timezone_get() spiegelt ausschließlich die PHP-seitige Konfiguration wider, nicht die des Betriebssystems.