Signatur
Beschreibung
date_default_timezone_set() legt die Standardzeitzone fest, die von Funktionen wie date(), mktime(), strtotime() und der DateTime-Klasse genutzt wird, sofern keine explizite Zeitzone angegeben wurde. Der übergebene Bezeichner muss ein gültiger Zeitzonen-String aus der Olson-Datenbank sein (z. B. Europe/Berlin oder UTC).
In der Praxis empfiehlt es sich, die Zeitzone entweder über date_default_timezone_set() zu Beginn des Skripts oder global über den php.ini-Eintrag date.timezone zu setzen. Fehlt eine gültige Zeitzonenkonfiguration, gibt PHP eine Warnung aus und fällt auf UTC zurück.
Für Anwendungen, die mit mehreren Zeitzonen arbeiten, ist es oft sinnvoller, DateTimeZone-Objekte direkt zu übergeben, anstatt die globale Standardzeitzone zu ändern – das verhindert unerwünschte Seiteneffekte in anderen Teilen des Codes.
- Gültige Bezeichner: Liste der unterstützten Zeitzonen
- Die aktuelle Standardzeitzone kann mit
date_default_timezone_get()abgefragt werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $timezoneId Pflicht | string | Ein gültiger Zeitzonen-Bezeichner gemäß der Olson-Datenbank, z. B. Europe/Berlin, America/New_York oder UTC. |
Rückgabewert
true zurück, wenn die Zeitzone erfolgreich gesetzt wurde, oder false, wenn der übergebene Bezeichner ungültig ist.Beispiele
Standardzeitzone auf Europe/Berlin setzen
<?php
// Zeitzone zu Beginn des Skripts setzen
date_default_timezone_set('Europe/Berlin');
// Aktuelle Zeit in der gesetzten Zeitzone ausgeben
echo date('d.m.Y H:i:s') . PHP_EOL;
// Gesetzte Zeitzone bestätigen
echo date_default_timezone_get() . PHP_EOL;
Rückgabewert prüfen und ungültige Zeitzone abfangen
<?php
$timezone = 'Europe/Berlin';
if (!date_default_timezone_set($timezone)) {
throw new RuntimeException("Ungültige Zeitzone: {$timezone}");
}
echo 'Zeitzone gesetzt: ' . date_default_timezone_get() . PHP_EOL;
// Beispiel mit ungültigem Bezeichner
$invalid = 'Invalid/Zone';
if (!date_default_timezone_set($invalid)) {
echo "Konnte Zeitzone '{$invalid}' nicht setzen." . PHP_EOL;
}
Zeitzone temporär wechseln und wiederherstellen
<?php
date_default_timezone_set('Europe/Berlin');
echo 'Berlin: ' . date('H:i:s') . PHP_EOL;
// Aktuelle Zeitzone merken
$originalTimezone = date_default_timezone_get();
// Temporär auf UTC wechseln
date_default_timezone_set('UTC');
echo 'UTC: ' . date('H:i:s') . PHP_EOL;
// Ursprüngliche Zeitzone wiederherstellen
date_default_timezone_set($originalTimezone);
echo 'Berlin: ' . date('H:i:s') . PHP_EOL;
// Wichtig · Fallstricke
Globale Wirkung: date_default_timezone_set() verändert die Zeitzone für das gesamte laufende Skript. In größeren Anwendungen (Frameworks, Bibliotheken) kann ein unbedachter Aufruf unerwartete Seiteneffekte verursachen. Wo möglich, sollte stattdessen DateTimeImmutable oder DateTime mit einem expliziten DateTimeZone-Objekt verwendet werden.
php.ini-Konfiguration: Die empfohlene Methode ist die globale Konfiguration über date.timezone = Europe/Berlin in der php.ini, damit kein einzelnes Skript vergisst, die Zeitzone zu setzen.
Deprecated UTC-Offset-Bezeichner: Kurzformen wie CET oder nummerische Offsets wie +02:00 als Zeitzonen-ID sind veraltet. Es sollten stets vollqualifizierte Bezeichner wie Europe/Berlin genutzt werden.