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

Date.prototype.getHours()

Methode

Gibt die Stunde (0–23) eines <code>Date</code>-Objekts in der lokalen Zeitzone der Laufzeitumgebung zurück.

seit JavaScript ES1 – Baseline: alle Browser Kategorie: method-property

Signatur

Date.prototype.getHours()

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

Typ
number
Beschreibung
Ganzzahl von 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());
14

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)));
Guten Morgen Guten Abend

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)));
07:05

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());
12 14 NaN

// 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, ohne Z) dagegen als lokale Zeit. Das beeinflusst, was getHours() 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.DateTimeFormat erzeugen.
  • Bei einem ungültigen Datum ist das Ergebnis NaN. Prüfe das bei Bedarf mit Number.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.