Signatur
Beschreibung
getHours() liest die Stundenkomponente eines Date-Objekts aus. Das Ergebnis ist eine Ganzzahl zwischen 0 (Mitternacht) und 23. Die Methode arbeitet immer mit der lokalen Zeitzone des Systems bzw. Browsers, auf dem das Skript läuft. Sommer- und Winterzeit werden dabei automatisch berücksichtigt.
Typische Einsatzgebiete sind tageszeitabhängige Begrüßungen („Guten Morgen“), Öffnungszeiten-Prüfungen, eigene Zeitformatierung (z. B. HH:MM) oder das Gruppieren von Ereignissen nach Stunden.
Brauchst du die Stunde unabhängig vom Standort des Nutzers, etwa für Serverdaten oder Protokolle, nimm getUTCHours(). Für die Anzeige in einer bestimmten Zeitzone (z. B. Europe/Berlin) ist Intl.DateTimeFormat mit der Option timeZone die richtige Wahl. getHours() kennt nur die Systemzeitzone.
Rückgabewert
0 bis 23 für die Stunde in lokaler Zeit. Bei einem ungültigen Datum (Invalid Date) kommt NaN zurück.Beispiele
Aktuelle Stunde auslesen
const jetzt = new Date(2024, 2, 15, 14, 37, 5); // 15. März 2024, 14:37:05 lokal
console.log(jetzt.getHours());
Tageszeitabhängige Begrüßung
const begruessung = (datum = new Date()) => {
const stunde = datum.getHours();
if (stunde < 5) return 'Gute Nacht';
if (stunde < 12) return 'Guten Morgen';
if (stunde < 18) return 'Guten Tag';
return 'Guten Abend';
};
console.log(begruessung(new Date(2024, 0, 1, 9, 0)));
console.log(begruessung(new Date(2024, 0, 1, 20, 30)));
Uhrzeit als HH:MM formatieren
const formatZeit = (d) =>
`${String(d.getHours()).padStart(2, '0')}:${String(d.getMinutes()).padStart(2, '0')}`;
console.log(formatZeit(new Date(2024, 5, 1, 7, 5)));
Lokale Stunde vs. UTC-Stunde und ungültiges Datum
// ISO-String mit 'Z' = UTC
const d = new Date('2024-07-01T12:00:00Z');
console.log(d.getUTCHours()); // immer 12
console.log(d.getHours()); // in Europe/Berlin (Sommerzeit, UTC+2): 14
const ungueltig = new Date('kein Datum');
console.log(ungueltig.getHours());
// Wichtig · Fallstricke
- Zeitzone: Das Ergebnis hängt von der Systemzeitzone ab. Derselbe Zeitstempel kann auf Server und Client unterschiedliche Stunden liefern. Für einheitliche Werte nimm
getUTCHours(). - Parsing-Falle:
new Date('2024-07-01')(nur Datum) wird als UTC gelesen,new Date('2024-07-01T00:00')(mit Uhrzeit, ohneZ) dagegen als lokale Zeit. Das beeinflusst, wasgetHours()zurückgibt. - Sommerzeit: An Umstellungstagen fehlen Stunden oder kommen doppelt vor (z. B. 02:00–03:00 im März). Wer mit Stunden rechnet, sollte das bedenken.
- Keine 12-Stunden-Anzeige: Der Wert ist immer im 24-Stunden-Format. Eine AM/PM-Darstellung musst du selbst bauen oder über
toLocaleTimeString()bzw.Intl.DateTimeFormaterzeugen. - Bei einem ungültigen Datum ist das Ergebnis
NaN. Prüfe das bei Bedarf mitNumber.isNaN(d.getTime()). - Die Methode wird in allen Browsern und in Node.js unterstützt. Für neue Projekte lohnt sich ein Blick auf die
Temporal-API, die bessere Unterstützung für Zeitzonen bietet. Sie ist aber noch nicht überall verfügbar.