Start · Sprachen · JavaScript · Referenz · Temporal.Now.timeZoneId()

Temporal.Now.timeZoneId()

Methode

Gibt den Identifier der aktuellen Systemzeitzone als String zurück, z. B. <code>"Europe/Berlin"</code> oder <code>"UTC"</code>.

seit JavaScript ES2026 (Temporal); Firefox 139+, Chrome 144+, Safa Kategorie: method-property

Signatur

Temporal.Now.timeZoneId()

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

Typ
string
Beschreibung
Der Identifier der aktuellen Systemzeitzone, z. B. "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);
Europe/Berlin

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'));
Gespeichert

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
2025-03-15T14:30:00+01:00[Europe/Berlin] 2025-03-15T13:30:00Z

Vergleich mit der Intl-API und Fallback

const getTimeZone = () =>
  typeof Temporal !== 'undefined'
    ? Temporal.Now.timeZoneId()
    : Intl.DateTimeFormat().resolvedOptions().timeZone;

console.log(getTimeZone());
Europe/Berlin

// 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/polyfill oder temporal-polyfill. Prüfen Sie vorher mit typeof 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 noch Temporal.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 TZ in 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.resistFingerprinting in 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 besser Temporal.ZonedDateTime.prototype.equals() als einen reinen String-Vergleich.