Start · Sprachen · JavaScript · Referenz · Temporal.PlainDateTime.prototype.toPlainTime()

Temporal.PlainDateTime.prototype.toPlainTime()

Methode

Gibt ein neues <code>Temporal.PlainTime</code> mit dem Zeitanteil (Stunde bis Nanosekunde) dieses <code>Temporal.PlainDateTime</code> zurück. Das Datum wird verworfen.

seit JavaScript ES2026 (Temporal, Stage 4) – Firefox 139+, Chrome Kategorie: method-property

Signatur

Temporal.PlainDateTime.prototype.toPlainTime()

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

Typ
Temporal.PlainTime
Beschreibung
Ein neues 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
14:30:15.25 14 30 250 2024-11-05T14:30:15.25

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')));
true false

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());
z. B. 2025-01-06T16:42:00

// 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/polyfill oder temporal-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() oder round() auf dem Ergebnis auf.
  • Informationsverlust: Datum und Kalender gehen verloren. Wer über Mitternacht hinaus rechnet, zum Beispiel 23:00 + 2 Stunden, bekommt bei PlainTime einen Umlauf auf 01:00 und keinen Tageswechsel. Für solche Rechnungen sollte man beim PlainDateTime bleiben.
  • Keine Zeitzone: PlainTime ist eine reine Wanduhrzeit. Sommerzeit-Umstellungen werden nicht berücksichtigt. Dafür braucht man Temporal.ZonedDateTime.
  • Das Ergebnis ist immer ein neues Objekt. Zum Vergleichen verwendet man equals() oder Temporal.PlainTime.compare(), nicht ===.