Start · Sprachen · PHP · Referenz · timezone_open

timezone_open

Funktion

Erstellt ein neues <code>DateTimeZone</code>-Objekt anhand eines Zeitzonenbezeichners.

seit PHP 5.1.0 Kategorie: date

Signatur

timezone_open(string $timezone): DateTimeZone|false

Beschreibung

timezone_open() ist die prozedurale Variante des DateTimeZone-Konstruktors. Die Funktion akzeptiert einen gültigen Zeitzonenbezeichner (z. B. Europe/Berlin, UTC oder America/New_York) und gibt ein entsprechendes DateTimeZone-Objekt zurück, das zur Arbeit mit zeitzonen-abhängigen Datum-/Uhrzeit-Operationen genutzt werden kann.

Das zurückgegebene Objekt lässt sich anschließend an Funktionen wie date_create(), date_timezone_set() oder timezone_offset_get() übergeben, um Datum-/Uhrzeit-Werte in einer bestimmten Zeitzone zu erzeugen oder umzurechnen.

Gültige Bezeichner entsprechen der PHP-Zeitzonenliste, die auf der IANA-Zeitzonendatenbank basiert. Ungültige Bezeichner führen dazu, dass false zurückgegeben wird und eine Warnung ausgelöst wird.

In modernem objektorientiertem Code wird meist direkt new DateTimeZone($timezone) bevorzugt; timezone_open() ist aber funktional identisch und in prozedural geschriebenem Code gebräuchlich.

Parameter

Name Typ Default Beschreibung
$timezone Pflicht string Ein gültiger Zeitzonenbezeichner, z. B. Europe/Berlin, UTC oder +02:00. Ungültige Werte führen zu false als Rückgabewert und einer PHP-Warnung.

Rückgabewert

Typ
DateTimeZone|false
Beschreibung
Gibt bei Erfolg ein DateTimeZone-Objekt zurück, das den angegebenen Zeitzonenbezeichner repräsentiert. Bei einem ungültigen Bezeichner wird false zurückgegeben.

Beispiele

Aktuelles Datum in einer bestimmten Zeitzone ausgeben

<?php
$tz = timezone_open('Europe/Berlin');
$date = date_create('now', $tz);
echo date_format($date, 'Y-m-d H:i:s T');
2024-06-15 14:30:00 CEST

UTC-Offset einer Zeitzone ermitteln

<?php
$tz = timezone_open('America/New_York');
if ($tz === false) {
    echo 'Ungültige Zeitzone!';
} else {
    $date = date_create('now', $tz);
    $offset = timezone_offset_get($tz, $date);
    echo 'UTC-Offset in Sekunden: ' . $offset . PHP_EOL;
    echo 'UTC-Offset in Stunden: ' . ($offset / 3600);
}
UTC-Offset in Sekunden: -14400 UTC-Offset in Stunden: -4

Fehlerbehandlung bei ungültigem Bezeichner

<?php
$tz = @timezone_open('Keine/Gueltige/Zone');
if ($tz === false) {
    echo 'Die angegebene Zeitzone ist ungültig.';
}
Die angegebene Zeitzone ist ungültig.

// Wichtig · Fallstricke

Fallstrick: Die Funktion gibt bei ungültigem Bezeichner false zurück und erzeugt eine PHP-Warnung. Der Rückgabewert sollte daher immer mit === false geprüft werden. Um die Warnung zu unterdrücken, kann der @-Operator genutzt werden, allerdings ist dies in der Regel kein empfohlener Stil — besser ist eine vorherige Validierung via in_array($bezeichner, DateTimeZone::listIdentifiers()).

Hinweis: timezone_open() ist eine prozedurale Alias-Funktion für new DateTimeZone(). In objektorientierten Projekten sollte direkt der Konstruktor verwendet werden.