Start · Sprachen · JavaScript · Referenz · Date.prototype.getUTCHours()

Date.prototype.getUTCHours()

Methode

Gibt die Stunde (0–23) eines <code>Date</code>-Objekts nach koordinierter Weltzeit (UTC) zurück, unabhängig von der lokalen Zeitzone.

seit JavaScript ES1 (Baseline: alle Browser) Kategorie: method-property

Signatur

Date.prototype.getUTCHours()

Beschreibung

getUTCHours() liefert die Stundenkomponente eines Date-Objekts als ganze Zahl zwischen 0 und 23, und zwar bezogen auf UTC und nicht auf die lokale Zeitzone der Laufzeitumgebung. Damit ist die Methode das UTC-Gegenstück zu getHours().

Man braucht sie immer dann, wenn Zeitangaben unabhängig vom Standort der Nutzer ausgewertet werden sollen, etwa beim Protokollieren auf dem Server, beim Vergleichen von Zeitstempeln aus verschiedenen Zeitzonen, beim Erzeugen von ISO-ähnlichen Zeitformaten oder bei der Planung von Vorgängen, die zu einer festen UTC-Stunde laufen, zum Beispiel Cronjobs oder Wartungsfenster.

Intern speichert ein Date-Objekt nur einen Zeitstempel in Millisekunden seit dem 1. Januar 1970, 00:00:00 UTC. getUTCHours() liest diesen Wert ohne Zeitzonen-Verschiebung aus. Deshalb ist das Ergebnis auf jedem System gleich, während getHours() je nach Zeitzone und Sommerzeit andere Werte liefert.

Rückgabewert

Typ
number
Beschreibung
Eine ganze Zahl von 0 bis 23 mit der UTC-Stunde des Datums. Bei einem ungültigen Datum ist der Wert NaN.

Beispiele

UTC-Stunde im Vergleich zur lokalen Stunde

// Zeitpunkt mit expliziter Zeitzone (+02:00, z. B. MESZ)
const termin = new Date('2024-07-15T14:30:00+02:00');

console.log(termin.getUTCHours()); // immer 12, egal wo der Code läuft
console.log(termin.getHours());    // hängt von der lokalen Zeitzone ab
12 14 (bei Zeitzone Europe/Berlin im Sommer)

Zeitstempel im Format HH:MM UTC für Logs

const pad = (n) => String(n).padStart(2, '0');

const formatUtcTime = (date) =>
  `${pad(date.getUTCHours())}:${pad(date.getUTCMinutes())} UTC`;

const ereignis = new Date(Date.UTC(2024, 0, 1, 7, 5));
console.log(formatUtcTime(ereignis));
07:05 UTC

Prüfen, ob gerade ein Wartungsfenster (UTC) aktiv ist

// Wartung täglich zwischen 02:00 und 04:00 UTC
const istWartungsfenster = (date = new Date()) => {
  const stunde = date.getUTCHours();
  return stunde >= 2 && stunde < 4;
};

console.log(istWartungsfenster(new Date('2024-03-10T03:15:00Z')));
console.log(istWartungsfenster(new Date('2024-03-10T05:00:00Z')));
true false

Ungültiges Datum abfangen

const kaputt = new Date('kein Datum');
const stunde = kaputt.getUTCHours();

console.log(stunde);                // NaN
console.log(Number.isNaN(stunde)); // true
NaN true

// Wichtig · Fallstricke

  • UTC vs. lokal: Oft wird versehentlich getHours() genommen, wo getUTCHours() gemeint ist, oder umgekehrt. Auf Entwicklerrechnern mit UTC-Zeitzone, etwa in CI-Umgebungen oder Docker-Containern, fällt dieser Fehler nicht auf und zeigt sich erst in Produktion.
  • Parsen von Zeichenketten: new Date('2024-07-15T14:30:00') ohne Zeitzonenangabe wird als lokale Zeit gelesen. Ein reines Datum wie '2024-07-15' wird dagegen als UTC gelesen. Für eindeutige Ergebnisse sollte man immer Z oder einen Offset angeben oder Date.UTC() verwenden.
  • Ungültige Daten: Bei einem ungültigen Datum ist der Rückgabewert NaN. Vor dem Formatieren sollte man ihn deshalb mit Number.isNaN() prüfen.
  • Keine Sommerzeit: UTC kennt keine Sommerzeit. Das Ergebnis springt deshalb nie um eine Stunde, und die Methode eignet sich gut für Berechnungen über Zeitumstellungen hinweg.
  • Kompatibilität: Die Methode wird von allen Browsern und von Node.js unterstützt. Für Zeitzonen mit Namen, zum Beispiel Europe/Berlin, eignen sich Intl.DateTimeFormat oder künftig die Temporal-API.