Signatur
Beschreibung
Temporal.Now.timeZoneId() ist eine statische Methode des Namensraum-Objekts Temporal.Now. Sie liefert den Zeitzonen-Identifier, den die Laufzeitumgebung gerade als lokale Zeitzone verwendet. In der Regel ist das ein IANA-Name wie "Europe/Berlin" oder "America/New_York". Manchmal ist es auch ein Offset-Identifier wie "+01:00" oder "UTC".
Die Methode hilft, wenn Sie die Zeitzone des Nutzers ausdrücklich weiterverwenden wollen: zum Beispiel beim Anlegen eines Temporal.ZonedDateTime, beim Speichern der Zeitzone in einem Nutzerprofil oder beim Mitsenden an einen Server, der Termine in der Ortszeit des Nutzers berechnen soll. In Temporal ist die Zeitzone kein versteckter Zustand wie bei Date. Sie wird als Wert von Funktion zu Funktion weitergereicht.
Das Ergebnis entspricht new Intl.DateTimeFormat().resolvedOptions().timeZone. Beide Wege liefern denselben Identifier. Temporal.Now.timeZoneId() ist aber kürzer und passt sprachlich zu den übrigen Temporal.Now-Methoden wie Temporal.Now.zonedDateTimeISO(). Diese Methoden verwenden intern ebenfalls diese Zeitzone, wenn Sie keine andere angeben.
Rückgabewert
"Europe/Berlin", "Asia/Tokyo" oder "UTC". Ist ein IANA-Name bekannt, wird er in der Regel zurückgegeben. Andernfalls kommt ein Offset-String wie "+05:30" zurück.Beispiele
Aktuelle Zeitzone ermitteln
const tz = Temporal.Now.timeZoneId();
console.log(tz);
Zeitzone an einen Server übermitteln
const saveUserSettings = async () => {
const response = await fetch('/api/settings', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ timeZone: Temporal.Now.timeZoneId() })
});
return response.ok;
};
saveUserSettings().then((ok) => console.log(ok ? 'Gespeichert' : 'Fehler'));
Termin in der lokalen Zeitzone anlegen
const tz = Temporal.Now.timeZoneId();
// Meeting am 15. März 2025 um 14:30 Uhr Ortszeit
const meeting = Temporal.PlainDateTime.from('2025-03-15T14:30')
.toZonedDateTime(tz);
console.log(meeting.toString());
console.log(meeting.toInstant().toString()); // als UTC-Zeitpunkt
Vergleich mit der Intl-API und Fallback
const getTimeZone = () =>
typeof Temporal !== 'undefined'
? Temporal.Now.timeZoneId()
: Intl.DateTimeFormat().resolvedOptions().timeZone;
console.log(getTimeZone());
// Wichtig · Fallstricke
- Browser-Unterstützung: Temporal gibt es bisher nur in neueren Browsern: Firefox ab Version 139, Chromium-basierte Browser ab Version 144. Safari und ältere Umgebungen brauchen einen Polyfill wie
@js-temporal/polyfillodertemporal-polyfill. Prüfen Sie vorher mittypeof Temporal !== 'undefined'. - Kein Zeitzonen-Objekt: Die Methode gibt einen einfachen String zurück. Nach einer Überarbeitung des Proposals gibt es kein
Temporal.TimeZone-Objekt mehr. Ältere Tutorials nennen nochTemporal.Now.timeZone(). Diese Methode wurde entfernt. - Wert kann sich ändern: Der Wert kann sich während der Laufzeit ändern, etwa wenn der Nutzer die Systemzeitzone umstellt oder auf Reisen ist. Speichern Sie ihn also nicht dauerhaft zwischen, wenn es auf Aktualität ankommt.
- Nicht fälschungssicher: Die Zeitzone kommt vom Client und lässt sich leicht manipulieren, z. B. über Browser-Einstellungen, DevTools oder die Umgebungsvariable
TZin Node.js. Verlassen Sie sich serverseitig nicht darauf, um Standort oder Zugriffsrechte zu bestimmen. - Datenschutz: Die Zeitzone ist ein Merkmal für Fingerprinting. Datenschutz-Modi wie
privacy.resistFingerprintingin Firefox melden deshalb eventuell"UTC". - Aliasse: Je nach Engine kommen veraltete Alias-Namen zurück, etwa
"Asia/Calcutta"statt"Asia/Kolkata". Nutzen Sie zum Vergleichen besserTemporal.ZonedDateTime.prototype.equals()als einen reinen String-Vergleich.