Start · Sprachen · PHP · Referenz · datefmt_get_timezone_id

datefmt_get_timezone_id

Funktion

Gibt die Zeitzonen-ID des angegebenen <code>IntlDateFormatter</code>-Objekts zurück.

seit PHP 5.3.0 Kategorie: string

Signatur

datefmt_get_timezone_id(IntlDateFormatter $formatter): string|false

Beschreibung

datefmt_get_timezone_id() ist die prozedurale Entsprechung zur Methode IntlDateFormatter::getTimezoneId() und gibt die aktuell im Formatter eingestellte Zeitzonen-ID als Zeichenkette zurück (z. B. "Europe/Berlin" oder "UTC").

Die Funktion ist nützlich, wenn man überprüfen möchte, welche Zeitzone ein Formatter-Objekt verwendet, bevor Datums- oder Zeitwerte formatiert bzw. geparst werden. So können unerwartete Zeitverschiebungen frühzeitig erkannt und korrigiert werden.

Sie gehört zur Intl-Erweiterung (ICU) und arbeitet eng mit datefmt_set_timezone() zusammen. Die zurückgegebene ID entspricht dem CLDR/IANA-Zeitzonen-Format und kann direkt an DateTimeZone- oder ICU-Funktionen übergeben werden.

Parameter

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

Rückgabewert

Typ
string|false
Beschreibung
Gibt die Zeitzonen-ID als Zeichenkette zurück (z. B. "Europe/Berlin"). Im Fehlerfall wird false zurückgegeben.

Beispiele

Zeitzonen-ID eines Formatters auslesen

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

$timezoneId = datefmt_get_timezone_id($formatter);
echo $timezoneId; // Europe/Berlin
Europe/Berlin

Zeitzonen-ID nach Änderung der Zeitzone prüfen

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

echo 'Vorher: ' . datefmt_get_timezone_id($formatter) . PHP_EOL;

// Zeitzone ändern
datefmt_set_timezone($formatter, 'Asia/Tokyo');

echo 'Nachher: ' . datefmt_get_timezone_id($formatter) . PHP_EOL;
Vorher: America/New_York Nachher: Asia/Tokyo

OOP-Stil: getTimezoneId() als Methode

<?php
$formatter = new IntlDateFormatter(
    'fr_FR',
    IntlDateFormatter::LONG,
    IntlDateFormatter::LONG,
    'Europe/Paris'
);

// OOP-Äquivalent zu datefmt_get_timezone_id()
$id = $formatter->getTimezoneId();
echo $id;
Europe/Paris

// Wichtig · Fallstricke

Hinweis zur Intl-Erweiterung: Die Funktion steht nur zur Verfügung, wenn PHP mit der intl-Erweiterung kompiliert wurde (ab PHP 5.3). Ohne diese Erweiterung existiert weder die Funktion noch die Klasse IntlDateFormatter.

Ab PHP 5.5.0 wurde datefmt_set_timezone() eingeführt, das den älteren Parameter datefmt_set_timezone_id() ersetzt. Entsprechend sollte immer die aktuellere API verwendet werden. Die zurückgegebene ID kann von der Standardzeitzone abweichen, die in der php.ini unter date.timezone festgelegt ist.