Start · Sprachen · PHP · Referenz · datefmt_get_timezone

datefmt_get_timezone

Funktion

Liefert das <code>IntlTimeZone</code>-Objekt der aktuell im <code>IntlDateFormatter</code> konfigurierten Zeitzone zurück.

seit PHP 5.5.0 Kategorie: string

Signatur

datefmt_get_timezone(IntlDateFormatter $formatter): IntlTimeZone|false

Beschreibung

datefmt_get_timezone() ist die prozedurale Variante der Methode IntlDateFormatter::getTimeZone(). Sie gibt das IntlTimeZone-Objekt zurück, das dem übergebenen Formatter aktuell zugeordnet ist. So lässt sich die Zeitzone eines bestehenden Formatters auslesen, ohne sie neu setzen zu müssen.

Die Funktion ist besonders nützlich, wenn mehrere Formatter mit unterschiedlichen Zeitzonen eingesetzt werden und man zur Laufzeit prüfen möchte, welche Zeitzone ein bestimmter Formatter verwendet – etwa zum Debuggen oder zur Validierung.

Zurückgegeben wird ein IntlTimeZone-Objekt, das dann für weitere Operationen (z. B. Übergabe an andere ICU-Funktionen) wiederverwendet werden kann. Schlägt die Abfrage fehl, wird false zurückgegeben.

Alternativ kann dieselbe Funktionalität objektorientiert über IntlDateFormatter::getTimeZone() genutzt werden. Beide Varianten sind gleichwertig.

Parameter

Name Typ Default Beschreibung
$formatter Pflicht IntlDateFormatter Das IntlDateFormatter-Objekt, dessen Zeitzone abgefragt werden soll.

Rückgabewert

Typ
IntlTimeZone|false
Beschreibung
Gibt ein IntlTimeZone-Objekt zurück, das die aktuell im Formatter eingestellte Zeitzone repräsentiert. Bei einem Fehler wird false zurückgegeben.

Beispiele

Zeitzone eines Formatters auslesen

<?php
$formatter = datefmt_create(
    'de_DE',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'Europe/Berlin',
    IntlDateFormatter::GREGORIAN
);

$tz = datefmt_get_timezone($formatter);

if ($tz !== false) {
    echo $tz->getID(); // Gibt die Zeitzone-ID aus
} else {
    echo 'Fehler beim Abrufen der Zeitzone.';
}
Europe/Berlin

Zeitzone vergleichen und bei Bedarf ändern

<?php
$formatter = datefmt_create(
    'en_US',
    IntlDateFormatter::SHORT,
    IntlDateFormatter::SHORT,
    'America/New_York',
    IntlDateFormatter::GREGORIAN
);

$tz = datefmt_get_timezone($formatter);

if ($tz !== false && $tz->getID() !== 'UTC') {
    echo 'Aktuelle Zeitzone: ' . $tz->getID() . PHP_EOL;
    // Zeitzone auf UTC ändern
    datefmt_set_timezone($formatter, 'UTC');
    echo 'Neue Zeitzone: ' . datefmt_get_timezone($formatter)->getID();
}
Aktuelle Zeitzone: America/New_York Neue Zeitzone: UTC

// Wichtig · Fallstricke

Die Funktion setzt voraus, dass die intl-Erweiterung aktiviert ist. Sie wurde in PHP 5.5.0 eingeführt, da IntlTimeZone erst ab dieser Version verfügbar ist. In älteren PHP-Versionen (vor 5.5.0) kann die Zeitzone des Formatters nur als Zeichenkette über datefmt_get_timezone_id() abgerufen werden.

Wird ein ungültiges Objekt übergeben oder ist der Formatter intern nicht korrekt initialisiert, liefert die Funktion false – dies sollte stets geprüft werden, um Folgefehler zu vermeiden.