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

Temporal.PlainTime.prototype.hour

Eigenschaft

Liefert die Stundenkomponente einer <code>Temporal.PlainTime</code> als ganze Zahl von 0 bis 23.

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

Signatur

get Temporal.PlainTime.prototype.hour

Beschreibung

Die Zugriffseigenschaft hour gibt die Stunde einer Temporal.PlainTime-Instanz im 24-Stunden-Format zurück, also als ganze Zahl zwischen 0 (Mitternacht) und 23. Eine PlainTime ist eine reine Uhrzeit ohne Datum und ohne Zeitzone, deshalb hängt der Wert nie von der Systemzeitzone oder von Sommerzeitumstellungen ab.

Typische Einsatzfälle sind Geschäftslogik rund um Uhrzeiten: prüfen, ob eine Uhrzeit innerhalb der Öffnungszeiten liegt, Termine in Tagesabschnitte einteilen (Vormittag/Nachmittag) oder eine eigene Formatierung bauen, etwa eine 12-Stunden-Anzeige.

hour ist nur lesbar, denn Temporal-Objekte sind unveränderlich. Um die Stunde zu ändern, erzeugt man mit with({ hour: … }) eine neue Instanz, oder man verschiebt die Zeit mit add() bzw. subtract(). Die feineren Komponenten liest man über minute, second, millisecond, microsecond und nanosecond aus.

Rückgabewert

Typ
number
Beschreibung
Ganze Zahl von 0 bis 23, die Stunde der Uhrzeit im 24-Stunden-Format.

Beispiele

Stunde aus einer Uhrzeit auslesen

const zeit = Temporal.PlainTime.from('14:35:20');
console.log(zeit.hour);

const mitternacht = new Temporal.PlainTime(0, 0);
console.log(mitternacht.hour);
14 0

Prüfen, ob eine Uhrzeit in den Öffnungszeiten liegt

const istGeoeffnet = (zeit) => zeit.hour >= 9 && zeit.hour < 18;

console.log(istGeoeffnet(Temporal.PlainTime.from('08:59')));
console.log(istGeoeffnet(Temporal.PlainTime.from('12:15')));
console.log(istGeoeffnet(Temporal.PlainTime.from('18:00')));
false true false

12-Stunden-Anzeige selbst bauen

const format12h = (zeit) => {
  const suffix = zeit.hour < 12 ? 'AM' : 'PM';
  const h = zeit.hour % 12 || 12;
  return `${h}:${String(zeit.minute).padStart(2, '0')} ${suffix}`;
};

console.log(format12h(Temporal.PlainTime.from('00:05')));
console.log(format12h(Temporal.PlainTime.from('13:45')));
12:05 AM 1:45 PM

Stunde ändern: neue Instanz mit with()

const zeit = Temporal.PlainTime.from('09:30');
const spaeter = zeit.with({ hour: 17 });

console.log(zeit.hour);     // Original bleibt unverändert
console.log(spaeter.toString());

// Überlauf über Mitternacht bei add()
console.log(Temporal.PlainTime.from('23:00').add({ hours: 2 }).hour);
9 17:30:00 1

// Wichtig · Fallstricke

  • Nur lesbar: Eine Zuweisung wie zeit.hour = 5 hat keine Wirkung und wirft im Strict Mode einen TypeError, weil es keinen Setter gibt. Stattdessen with() verwenden.
  • Überlauf: add()/subtract() laufen bei PlainTime über Mitternacht hinweg im Kreis (23 Uhr + 2 Stunden = 1 Uhr). Ein Tageswechsel wird nicht gemeldet. Wer das Datum braucht, arbeitet mit Temporal.PlainDateTime.
  • Kein 24:00: Der Wert ist höchstens 23. with({ hour: 24 }) wird standardmäßig auf 23 gekappt (overflow: 'constrain'), mit { overflow: 'reject' } gibt es einen RangeError.
  • Kompatibilität: Temporal ist noch nicht in allen Engines verfügbar (seit Firefox 139, Chrome 144; Safari noch nicht). Für den Produktiveinsatz einen Polyfill wie @js-temporal/polyfill oder temporal-polyfill einbinden und vorher mit typeof Temporal !== 'undefined' prüfen.
  • Wird der Getter auf einem Objekt aufgerufen, das keine PlainTime ist (z. B. über call), wirft er einen TypeError.