Start · Sprachen · PHP · Referenz · date_default_timezone_set

date_default_timezone_set

Funktion

Setzt die Standardzeitzone, die von allen Datums- und Zeitfunktionen in einem PHP-Skript verwendet wird.

seit PHP 5.1.0 Kategorie: date

Signatur

date_default_timezone_set(string $timezoneId): bool

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.

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

Typ
bool
Beschreibung
Gibt 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;
15.06.2024 14:32:07 Europe/Berlin

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 gesetzt: Europe/Berlin Konnte Zeitzone 'Invalid/Zone' nicht setzen.

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;
Berlin: 14:32:07 UTC: 12:32:07 Berlin: 14:32:07

// 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.