Signatur
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
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.';
}
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();
}
// 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.