Die Methode Date.prototype.getTimezoneOffset() gibt die Differenz zwischen UTC und der lokalen Zeitzone in Minuten zurück. Sie ist die einzige praktikable Methode, um zur Laufzeit zu erfahren, in welcher Zeitzone der Code ausgeführt wird – beispielsweise für die Anzeige von Zeitstempeln in der lokalen Zone des Nutzers oder für serverseitige Logik, die Zeitzonen-Anpassungen beim Render von HTML-Antworten vornehmen muss. Wichtig: Das Vorzeichen ist umgekehrt zur intuitiven Erwartung – für Zonen östlich von UTC ist der Wert negativ.

Funktionsweise

Der Wert wird gemäß der Formel UTC - lokale Zeit (in Minuten) berechnet. Da MEZ (UTC+1) der UTC eine Stunde voraus ist, gibt getTimezoneOffset() dort -60 zurück. Diese auf den ersten Blick unintuitive Konvention ist ein Erbe der ursprünglichen ECMAScript-Spezifikation und kann nicht geändert werden.

Wichtige Eigenschaften:

  • Sommerzeit-bewusst: Der Rückgabewert berücksichtigt automatisch die Sommerzeit-Regeln der lokalen Zeitzone. In Deutschland liefert die Methode im Winter -60 (MEZ, UTC+1) und im Sommer -120 (MESZ, UTC+2).
  • Datumsabhängig: Da die Methode auf einem konkreten Date-Objekt operiert, kann sie für historische oder zukünftige Daten unterschiedliche Werte liefern – z. B. bei Zeitzonen, die ihre Regeln im Lauf der Zeit geändert haben.
  • Minutengranularität: Notwendig für Zonen mit halb- oder viertelstündlichem Offset wie Indien (UTC+5:30 → -330) oder Nepal (UTC+5:45 → -345).

Syntax

JavaScript Syntax
date.getTimezoneOffset()

Die Methode erwartet keine Parameter.

Rückgabewert

Eine Zahl, die den Versatz zur UTC in Minuten angibt. Negative Werte bedeuten östlich von UTC, positive Werte westlich. Bei einem ungültigen Datum wird NaN zurückgegeben.

Beispiele

Aktuellen Offset in MEZ ermitteln

JavaScript Beispiel
const date = new Date("2026-01-15T12:00:00");
console.log(date.getTimezoneOffset());
Output
-60

Der Wert -60 bedeutet UTC+1 (Mitteleuropäische Zeit, Winterzeit).

Sommerzeit erkennen

Ein Date in MEZ-Zeit liefert im Winter -60, im Sommer -120. Über den Vergleich zweier Daten lässt sich erkennen, ob die Sommerzeit aktiv ist.

JavaScript Beispiel
function istSommerzeit(date) {
    const januar = new Date(date.getFullYear(), 0, 1).getTimezoneOffset();
    const juli = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();
    return date.getTimezoneOffset() < Math.max(januar, juli);
}

console.log(istSommerzeit(new Date("2026-07-15")));
console.log(istSommerzeit(new Date("2026-01-15")));
Output
true
false

Offset als ISO-Suffix formatieren

ISO-8601-Datumsangaben enthalten den Offset im Format +HH:MM oder -HH:MM. Aus den Minuten lässt sich das ableiten – das Vorzeichen muss invertiert werden.

JavaScript Beispiel
function offsetSuffix(date) {
    const min = date.getTimezoneOffset();
    const vorzeichen = min <= 0 ? "+" : "-";
    const hh = String(Math.floor(Math.abs(min) / 60)).padStart(2, "0");
    const mm = String(Math.abs(min) % 60).padStart(2, "0");
    return `${vorzeichen}${hh}:${mm}`;
}

console.log(offsetSuffix(new Date("2026-07-15"))); // MESZ
console.log(offsetSuffix(new Date("2026-01-15"))); // MEZ
Output
+02:00
+01:00

UTC-Datum aus lokalem Datum konstruieren

Wenn ein Datum in lokaler Zeit als wäre-es-UTC interpretiert werden soll, kann der Offset hinzugerechnet werden.

JavaScript Beispiel
const lokal = new Date("2026-05-01T12:00:00");
const offsetMs = lokal.getTimezoneOffset() * 60 * 1000;
const alsUTC = new Date(lokal.getTime() - offsetMs);
console.log(alsUTC.toISOString());
Output
2026-05-01T12:00:00.000Z

Hinweise & verwandte Methoden

  • Die umgekehrte Vorzeichen-Konvention ist eine klassische Fehlerquelle. Wer einen Wert wie „+1 Stunde” ausgeben möchte, muss das Vorzeichen invertieren.
  • Es gibt keinen Setter für die Zeitzone – Date-Objekte arbeiten immer mit der lokalen Zeitzone des Systems oder mit UTC.
  • Für umfangreichere Zeitzonen-Logik (z. B. „Was ist 14:00 Uhr in Tokio?”) empfiehlt sich Intl.DateTimeFormat mit der Option timeZone oder die Bibliothek Temporal-API (in modernen Browsern bereits verfügbar).
  • Die zurückgegebenen Minuten sind nicht stabil über die Zeit – durch Zeitzonenreformen oder Sommerzeit-Wechsel kann derselbe Code an verschiedenen Tagen unterschiedliche Werte liefern.
/ Weiter

Zurück zu Date

Zur Übersicht