Signatur
Beschreibung
Die Zugriffs-Eigenschaft hour liefert die Stunde eines Temporal.ZonedDateTime-Objekts als ganze Zahl von 0 bis 23. Es ist die lokale Uhrzeit in der Zeitzone, die im Objekt gespeichert ist, also nicht die UTC-Stunde. Derselbe Zeitpunkt kann deshalb in verschiedenen Zeitzonen unterschiedliche hour-Werte haben.
Die Eigenschaft kann nur gelesen werden. Sie hat keinen Setter. Wer die Stunde ändern möchte, erzeugt mit with({ hour }) ein neues Objekt, denn alle Temporal-Objekte sind unveränderlich. Zusammen mit minute, second usw. bildet hour die Uhrzeit-Anteile des Objekts.
Typische Einsatzfälle sind Prüfungen auf Geschäftszeiten, Begrüßungen je nach Tageszeit („Guten Morgen“) oder das Gruppieren von Ereignissen nach Stunde. Bei Tagen mit Zeitumstellung (Sommer-/Winterzeit) sollte man bedenken, dass einzelne Stunden fehlen oder doppelt vorkommen können.
Rückgabewert
0 bis 23: die Stunde der lokalen Uhrzeit in der Zeitzone des Objekts.Beispiele
Stunde auslesen
const zdt = Temporal.ZonedDateTime.from('2024-03-15T14:30:00[Europe/Berlin]');
console.log(zdt.hour);
Derselbe Zeitpunkt in einer anderen Zeitzone
const berlin = Temporal.ZonedDateTime.from('2024-03-15T14:30:00[Europe/Berlin]');
const newYork = berlin.withTimeZone('America/New_York');
console.log(berlin.hour); // Lokale Stunde in Berlin (MEZ, UTC+1)
console.log(newYork.hour); // Lokale Stunde in New York (EDT, UTC-4)
Zeitumstellung: fehlende Stunde und Ändern mit with()
// Am 31.03.2024 springt die Uhr in Berlin von 02:00 auf 03:00
const vorher = Temporal.ZonedDateTime.from('2024-03-31T01:30:00[Europe/Berlin]');
console.log(vorher.add({ hours: 1 }).hour);
// Die Stunde 2 gibt es an diesem Tag nicht, 'compatible' verschiebt nach vorn
const gesetzt = vorher.with({ hour: 2 });
console.log(gesetzt.hour, gesetzt.minute);
Begrüßung je nach Tageszeit
const greeting = (zdt) => {
const { hour } = zdt;
if (hour < 5) return 'Gute Nacht';
if (hour < 12) return 'Guten Morgen';
if (hour < 18) return 'Guten Tag';
return 'Guten Abend';
};
const jetzt = Temporal.ZonedDateTime.from('2024-06-01T08:15:00[Europe/Berlin]');
console.log(greeting(jetzt));
// Im echten Einsatz: greeting(Temporal.Now.zonedDateTimeISO())
// Wichtig · Fallstricke
- Nur lesbar: Eine Zuweisung wie
zdt.hour = 5hat keine Wirkung und wirft im Strict Mode einenTypeError. Für einen anderen Wertzdt.with({ hour: 5 })verwenden. - Lokale Uhrzeit, nicht UTC: Für die UTC-Stunde zuerst
zdt.withTimeZone('UTC').houraufrufen. - Zeitumstellung: An Tagen mit Sommerzeitbeginn fehlt eine Stunde, beim Wechsel zur Winterzeit gibt es eine Stunde zweimal. Zwei Objekte mit gleichem
hourkönnen dann verschiedene Zeitpunkte sein. Welcher gemeint ist, zeigtoffset. Mit der Optiondisambiguationvonwith()/from()legt man fest, wie mit solchen Uhrzeiten umgegangen wird. - Kalender:
hourhängt nicht vom Kalendersystem ab und liegt immer zwischen 0 und 23. - Kompatibilität: Temporal gibt es noch nicht in allen Browsern (Stand: unterstützt in Firefox ab 139 und Chrome ab 144, in Safari bisher nicht). Wo es fehlt, hilft ein Polyfill wie
@js-temporal/polyfillodertemporal-polyfill.