Signatur
Beschreibung
Mit getTimeZones() erfahren Sie, welche Zeitzonen in der Region einer Intl.Locale gelten. Die Methode liefert IANA-Bezeichner wie "Europe/Berlin" oder "America/New_York". Diese Werte können Sie direkt an Intl.DateTimeFormat (Option timeZone) oder an Date.prototype.toLocaleString() übergeben.
Entscheidend ist nur das Regions-Subtag der Locale, zum Beispiel US in en-US oder DE in de-DE. Fehlt die Region, etwa bei new Intl.Locale("de"), gibt die Methode undefined zurück und kein leeres Array. Bei jedem Aufruf erhalten Sie ein neues Array, das Sie ohne Folgen verändern können.
Typische Anwendungen:
- Vorschläge für eine Zeitzonen-Auswahl in Formularen, passend zum Land des Benutzers
- Prüfen, ob eine Region mehrere Zeitzonen hat, zum Beispiel die USA, Russland oder Australien
- Einen sinnvollen Standardwert vorbelegen, wenn die Region nur eine Zeitzone hat
Die Methode ersetzt die ältere Getter-Eigenschaft Intl.Locale.prototype.timeZones, die einige Browser vorab eingeführt hatten.
Rückgabewert
undefined zurückgegeben.Beispiele
Zeitzonen einzelner Länder abfragen
const de = new Intl.Locale("de-DE");
console.log(de.getTimeZones());
const jp = new Intl.Locale("ja-JP");
console.log(jp.getTimeZones());
// Ohne Region gibt es kein Ergebnis
const nurSprache = new Intl.Locale("de");
console.log(nurSprache.getTimeZones());
Zeitzonen-Auswahl für ein Formular füllen
const fuelleZeitzonenAuswahl = (select, localeTag) => {
const locale = new Intl.Locale(localeTag);
const zonen = locale.getTimeZones?.() ?? [];
select.replaceChildren(
...zonen.map((zone) => new Option(zone.replaceAll("_", " "), zone))
);
// Nur eine Zone bekannt: direkt vorauswählen
if (zonen.length === 1) select.value = zonen[0];
};
fuelleZeitzonenAuswahl(document.querySelector("#zeitzone"), "en-US");
Uhrzeit in allen Zeitzonen eines Landes anzeigen, mit Rückfall auf den alten Getter
const holeZeitzonen = (locale) =>
typeof locale.getTimeZones === "function"
? locale.getTimeZones()
: locale.timeZones; // alter, veralteter Getter
const locale = new Intl.Locale("en-AU");
const jetzt = new Date();
for (const timeZone of holeZeitzonen(locale) ?? []) {
const zeit = jetzt.toLocaleTimeString("de-DE", {
timeZone,
hour: "2-digit",
minute: "2-digit",
});
console.log(`${timeZone}: ${zeit}`);
}
// Wichtig · Fallstricke
- Browser-Unterstützung: Die Methode stammt aus dem TC39-Vorschlag „Intl Locale Info“. Chrome/Edge unterstützen sie ab Version 130, Safari ab 17. Firefox unterstützt sie derzeit nicht. Ältere Chromium-Versionen (ab 99) kennen nur den Getter
timeZones, der inzwischen als veraltet gilt. Prüfen Sie deshalb vor dem Aufruf, ob die Methode vorhanden ist, zum Beispiel mitlocale.getTimeZones?.(). - Rückgabewert
undefined: Ohne Regions-Subtag gibt es kein Array. Setzen Sie einen Standardwert (?? []), bevor Sie.map()oder.lengthverwenden. - Region statt Sprache:
en-DEliefert deutsche Zeitzonen,de-ATösterreichische. Die Sprache spielt keine Rolle. - Bezeichner können veraltet sein: Je nach Engine und ICU-Version kommen auch ältere IANA-Namen vor, zum Beispiel
"Asia/Calcutta"statt"Asia/Kolkata". Vergleichen Sie Bezeichner deshalb nicht mit fest eingetragenen Zeichenketten. - Datenstand: Die Liste stammt aus den CLDR-/ICU-Daten des Browsers. Sie kann sich zwischen Versionen ändern und nennt nicht unbedingt jede historische IANA-Zone.
- Die Zeitzone des Benutzers selbst ermitteln Sie mit
Intl.DateTimeFormat().resolvedOptions().timeZone. Alle unterstützten Zeitzonen unabhängig vom Land liefertIntl.supportedValuesOf("timeZone").