Signatur
Beschreibung
Temporal.PlainTime ist Teil der Temporal-API und modelliert eine reine Tageszeit (Stunden, Minuten, Sekunden, Millisekunden, Mikrosekunden, Nanosekunden) ohne Datumsbezug und ohne Zeitzoneninformation. Typische Anwendungsfälle sind Öffnungszeiten, Stundenplan-Einträge oder Alarme, die jeden Tag zur gleichen Uhrzeit wiederholen.
Temporal.PlainTime-Objekte sind unveränderlich (immutable). Alle Operationen wie add(), subtract() oder with() geben ein neues Objekt zurück. Die Zeitkomponenten werden in einem 24-Stunden-Format mit Nanosekundenauflösung gespeichert.
Im Gegensatz zu Date enthält PlainTime keine Datums- oder Zeitzonendaten, was Mehrdeutigkeiten bei Sommerzeit-Umstellungen oder Zeitzonen-Offsets von vornherein ausschließt. Zum Kombinieren mit einem Datum kann PlainDate.prototype.toPlainDateTime() zusammen mit einer PlainTime verwendet werden.
Zum Parsen eines ISO-8601-Zeitstrings steht Temporal.PlainTime.from() zur Verfügung. Vergleiche zwischen zwei Instanzen erfolgen über Temporal.PlainTime.compare() oder die Instanzmethode equals().
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $hour | number | 0 | Stunde im Bereich 0–23. |
| $minute | number | 0 | Minute im Bereich 0–59. |
| $second | number | 0 | Sekunde im Bereich 0–59. |
| $millisecond | number | 0 | Millisekunde im Bereich 0–999. |
| $microsecond | number | 0 | Mikrosekunde im Bereich 0–999. |
| $nanosecond | number | 0 | Nanosekunde im Bereich 0–999. |
Rückgabewert
Temporal.PlainTime-Instanz mit den angegebenen Zeitkomponenten.Beispiele
Einfache Uhrzeit erstellen und ausgeben
// Erstellt eine Uhrzeit für 09:30:00
const morgenBesprechung = new Temporal.PlainTime(9, 30);
console.log(morgenBesprechung.toString()); // '09:30:00'
console.log(morgenBesprechung.hour); // 9
console.log(morgenBesprechung.minute); // 30
// Aus einem ISO-String parsen
const mittagspause = Temporal.PlainTime.from('12:00:00');
console.log(mittagspause.toString()); // '12:00:00'
Zeiten vergleichen, addieren und mit Datum kombinieren
const oeffnung = new Temporal.PlainTime(8, 0);
const schliessung = new Temporal.PlainTime(18, 0);
// Vergleich: gibt -1, 0 oder 1 zurück
const vergleich = Temporal.PlainTime.compare(oeffnung, schliessung);
console.log(vergleich); // -1 (Öffnung liegt vor Schließung)
// Zeitdauer addieren
const sitzungsende = oeffnung.add({ hours: 1, minutes: 30 });
console.log(sitzungsende.toString()); // '09:30:00'
// Prüfen ob aktuelle Zeit innerhalb der Öffnungszeiten liegt
const jetzt = Temporal.Now.plainTimeISO();
const istOffen =
Temporal.PlainTime.compare(jetzt, oeffnung) >= 0 &&
Temporal.PlainTime.compare(jetzt, schliessung) < 0;
console.log(`Geöffnet: ${istOffen}`);
// Mit einem Datum zu PlainDateTime kombinieren
const heute = Temporal.Now.plainDateISO();
const naechsteBesprechung = heute.toPlainDateTime(new Temporal.PlainTime(14, 30));
console.log(naechsteBesprechung.toString()); // z. B. '2025-06-10T14:30:00'
// Wichtig · Fallstricke
Browser-Unterstützung: Die Temporal-API befindet sich noch im TC39-Stage-3-Prozess. Ab 2025 bieten einige Browser experimentelle Unterstützung; für Produktionsumgebungen wird derzeit der Polyfill @js-temporal/polyfill empfohlen.
- Unveränderlichkeit: Alle Mutationsmethoden wie
with(),add()undsubtract()geben immer eine neue Instanz zurück — die ursprüngliche Instanz bleibt unverändert. - Überlauf: Beim Addieren von Dauern, die über Mitternacht hinausgehen, wird standardmäßig ein Wrap-around (Modulo 24 h) durchgeführt. Das Verhalten kann über den
overflow-Parameter gesteuert werden. - Keine Zeitzoneninformation:
PlainTimeenthält keinerlei Offset- oder Zeitzonen-Daten. Für zeitzonenbewusste Zeitpunkte mussTemporal.ZonedDateTimeverwendet werden. - Stringdarstellungen folgen dem ISO-8601-Format
HH:mm:ss(ggf. mit Sub-Sekunden-Anteil).