Start · Sprachen · PHP · Referenz · timezone_identifiers_list

timezone_identifiers_list

Funktion

Gibt ein numerisch indiziertes Array mit allen definierten Zeitzonenbezeichnern zurück, optional gefiltert nach Gruppe oder Land.

seit PHP 5.1.0 Kategorie: date

Signatur

timezone_identifiers_list(int $timezoneGroup = DateTimeZone::ALL, string|null $countryCode = null): array|false

Beschreibung

timezone_identifiers_list() liefert eine vollständige Liste aller in PHP verfügbaren Zeitzonenbezeichner (z. B. "Europe/Berlin", "America/New_York"). Die Bezeichner entsprechen der IANA-Zeitzonendatenbank und können direkt zur Erstellung von DateTimeZone-Objekten verwendet werden.

Über den ersten Parameter $timezoneGroup lässt sich die Ausgabe auf eine bestimmte Zeitzonengruppe einschränken. Hierfür werden Konstanten der Klasse DateTimeZone verwendet, z. B. DateTimeZone::EUROPE für alle europäischen Zeitzonen oder DateTimeZone::UTC für die UTC-Zeitzone. Mehrere Gruppen können per bitweisem OR (|) kombiniert werden.

Wird DateTimeZone::PER_COUNTRY als Gruppe angegeben, muss zusätzlich ein $countryCode (ISO-3166-1-Ländercode, z. B. "DE") übergeben werden, um die Zeitzonen eines bestimmten Landes abzurufen. Dies ist besonders nützlich in Formularen, in denen Nutzer ihre Zeitzone anhand des Landes auswählen sollen.

Die Funktion ist ein prozedurales Äquivalent zu DateTimeZone::listIdentifiers(). Sie eignet sich hervorragend zum Befüllen von Dropdown-Menüs, zur Validierung von Benutzereingaben oder zur Anzeige aller unterstützten Zeitzonen.

Parameter

Name Typ Default Beschreibung
$timezoneGroup int DateTimeZone::ALL Filtert die Zeitzonen nach Gruppe. Mögliche Werte sind Konstanten der Klasse DateTimeZone wie DateTimeZone::EUROPE, DateTimeZone::AMERICA, DateTimeZone::UTC, DateTimeZone::ALL oder DateTimeZone::PER_COUNTRY. Mehrere Gruppen können mit dem bitweisen OR-Operator kombiniert werden.
$countryCode string|null null Zweistelliger ISO-3166-1-Ländercode (z. B. "DE", "US"). Wird nur ausgewertet, wenn $timezoneGroup auf DateTimeZone::PER_COUNTRY gesetzt ist. In diesem Fall ist die Angabe des Ländercodes erforderlich.

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein numerisch indiziertes Array mit Zeitzonenbezeichnern als Zeichenketten zurück. Im Fehlerfall (z. B. ungültiger Ländercode in Kombination mit DateTimeZone::PER_COUNTRY) wird false zurückgegeben.

Beispiele

Alle verfügbaren Zeitzonenbezeichner ausgeben

<?php
$identifiers = timezone_identifiers_list();

// Erste 5 Einträge ausgeben
foreach (array_slice($identifiers, 0, 5) as $tz) {
    echo $tz . PHP_EOL;
}

echo 'Gesamt: ' . count($identifiers) . ' Zeitzonen';
Africa/Abidjan Africa/Accra Africa/Addis_Ababa Africa/Algiers Africa/Asmara Gesamt: 426 Zeitzonen

Nur europäische Zeitzonen auflisten

<?php
$europaeischeZeitzonen = timezone_identifiers_list(DateTimeZone::EUROPE);

echo 'Europäische Zeitzonen (' . count($europaeischeZeitzonen) . ')' . PHP_EOL;
foreach ($europaeischeZeitzonen as $tz) {
    echo $tz . PHP_EOL;
}
Europäische Zeitzonen (68) Europe/Amsterdam Europe/Andorra Europe/Astrakhan ...

Zeitzonen eines bestimmten Landes abrufen (Deutschland)

<?php
$deutscheZeitzonen = timezone_identifiers_list(DateTimeZone::PER_COUNTRY, 'DE');

if ($deutscheZeitzonen === false) {
    echo 'Ungültiger Ländercode oder Fehler.';
} else {
    echo 'Zeitzonen für Deutschland:' . PHP_EOL;
    foreach ($deutscheZeitzonen as $tz) {
        echo $tz . PHP_EOL;
    }
}
Zeitzonen für Deutschland: Europe/Berlin Europe/Busingen

Dropdown-Menü für Zeitzonen in einem HTML-Formular

<?php
$identifiers = timezone_identifiers_list(DateTimeZone::ALL);
$ausgewaehlteZeitzone = 'Europe/Berlin';

echo '<select name="timezone">' . PHP_EOL;
foreach ($identifiers as $tz) {
    $selected = ($tz === $ausgewaehlteZeitzone) ? ' selected' : '';
    echo '  <option value="' . htmlspecialchars($tz) . '"' . $selected . '>' . htmlspecialchars($tz) . '</option>' . PHP_EOL;
}
echo '</select>';

// Wichtig · Fallstricke

Abhängigkeit von der Zeitzonendatenbank: Die zurückgegebene Liste hängt von der installierten Version der IANA-Zeitzonendatenbank ab. Durch Updates des timezonedb-PECL-Pakets oder PHP-Updates kann sich die Anzahl der Bezeichner ändern.

Kombination von Gruppen: Mehrere Gruppen können mit dem bitweisen OR-Operator kombiniert werden, z. B. DateTimeZone::EUROPE | DateTimeZone::AMERICA, um Zeitzonen beider Kontinente zu erhalten.

Prozedurales Äquivalent: Diese Funktion ist identisch mit DateTimeZone::listIdentifiers() und kann je nach Codestil bevorzugt werden. In objektorientierten Projekten ist die Methode der Klasse DateTimeZone empfehlenswert.