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