Signatur
Beschreibung
Die Methode toPlainTime() holt aus einem Temporal.PlainDateTime nur die Uhrzeit heraus: hour, minute, second, millisecond, microsecond und nanosecond. Jahr, Monat, Tag und Kalender fallen dabei weg. Das Ergebnis ist ein unveränderliches Temporal.PlainTime-Objekt ohne Datum und ohne Zeitzone.
Die Methode eignet sich, wenn nur die Wanduhrzeit zählt. Typische Fälle sind Öffnungszeiten, wiederkehrende Termine wie „täglich um 08:30“ oder der Vergleich von Uhrzeiten, die an verschiedenen Tagen liegen. Mit Temporal.PlainTime.compare() lassen sich solche Uhrzeiten direkt vergleichen, ohne dass das Datum stört.
Das Gegenstück ist toPlainDate(), das nur das Datum liefert. Umgekehrt setzt Temporal.PlainDate.prototype.toPlainDateTime(time) Datum und Uhrzeit wieder zusammen. Das ursprüngliche PlainDateTime bleibt unverändert, denn alle Temporal-Objekte sind unveränderlich.
Rückgabewert
Temporal.PlainTime mit denselben Zeitkomponenten (Stunde bis Nanosekunde) wie dieses Datum-Uhrzeit-Objekt.Beispiele
Uhrzeit aus einem Zeitstempel herauslösen
const termin = Temporal.PlainDateTime.from('2024-11-05T14:30:15.250');
const uhrzeit = termin.toPlainTime();
console.log(uhrzeit.toString());
console.log(uhrzeit.hour, uhrzeit.minute, uhrzeit.millisecond);
console.log(termin.toString()); // Original bleibt unverändert
Prüfen, ob ein Zeitpunkt innerhalb der Öffnungszeiten liegt
const oeffnet = Temporal.PlainTime.from('09:00');
const schliesst = Temporal.PlainTime.from('18:00');
const istGeoeffnet = (dateTime) => {
const zeit = dateTime.toPlainTime();
return Temporal.PlainTime.compare(zeit, oeffnet) >= 0 &&
Temporal.PlainTime.compare(zeit, schliesst) < 0;
};
console.log(istGeoeffnet(Temporal.PlainDateTime.from('2024-03-01T10:15')));
console.log(istGeoeffnet(Temporal.PlainDateTime.from('2024-03-02T19:45')));
Aktuelle Uhrzeit ermitteln und auf ein neues Datum übertragen
const jetzt = Temporal.Now.plainDateTimeISO();
const zeit = jetzt.toPlainTime().round({ smallestUnit: 'minute' });
// Gleiche Uhrzeit, aber am nächsten Montag
const naechsterMontag = Temporal.PlainDate.from('2025-01-06');
const erinnerung = naechsterMontag.toPlainDateTime(zeit);
console.log(erinnerung.toString());
// Wichtig · Fallstricke
- Browser-Unterstützung: Temporal ist erst seit kurzem nativ verfügbar (Firefox 139+, Chrome 144+). In Safari und älteren Umgebungen braucht man ein Polyfill wie
@js-temporal/polyfillodertemporal-polyfill. - Keine Parameter: In früheren Entwürfen des Vorschlags gab es Varianten mit Argumenten. Heute nimmt die Methode keine Argumente an. Um Werte zu ändern, ruft man danach
with()oderround()auf dem Ergebnis auf. - Informationsverlust: Datum und Kalender gehen verloren. Wer über Mitternacht hinaus rechnet, zum Beispiel
23:00 + 2 Stunden, bekommt beiPlainTimeeinen Umlauf auf01:00und keinen Tageswechsel. Für solche Rechnungen sollte man beimPlainDateTimebleiben. - Keine Zeitzone:
PlainTimeist eine reine Wanduhrzeit. Sommerzeit-Umstellungen werden nicht berücksichtigt. Dafür braucht manTemporal.ZonedDateTime. - Das Ergebnis ist immer ein neues Objekt. Zum Vergleichen verwendet man
equals()oderTemporal.PlainTime.compare(), nicht===.