Start · Sprachen · JavaScript · Referenz · Temporal.ZonedDateTime.prototype.hour

Temporal.ZonedDateTime.prototype.hour

Eigenschaft

Gibt die Stunde (ganze Zahl von 0 bis 23) der Uhrzeit eines <code>Temporal.ZonedDateTime</code> in dessen Zeitzone zurück.

seit JavaScript Temporal (ES-Proposal Stage 3); Firefox 139+, Chro Kategorie: method-property

Signatur

get Temporal.ZonedDateTime.prototype.hour

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

Typ
number
Beschreibung
Ganze Zahl von 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);
14

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)
14 9

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);
3 3 30

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())
Guten Morgen

// Wichtig · Fallstricke

  • Nur lesbar: Eine Zuweisung wie zdt.hour = 5 hat keine Wirkung und wirft im Strict Mode einen TypeError. Für einen anderen Wert zdt.with({ hour: 5 }) verwenden.
  • Lokale Uhrzeit, nicht UTC: Für die UTC-Stunde zuerst zdt.withTimeZone('UTC').hour aufrufen.
  • Zeitumstellung: An Tagen mit Sommerzeitbeginn fehlt eine Stunde, beim Wechsel zur Winterzeit gibt es eine Stunde zweimal. Zwei Objekte mit gleichem hour können dann verschiedene Zeitpunkte sein. Welcher gemeint ist, zeigt offset. Mit der Option disambiguation von with()/from() legt man fest, wie mit solchen Uhrzeiten umgegangen wird.
  • Kalender: hour hä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/polyfill oder temporal-polyfill.