Signatur
Beschreibung
Die Methode toPlainDateTime() ergänzt ein reines Kalenderdatum (Temporal.PlainDate) um eine Uhrzeit und gibt ein Temporal.PlainDateTime zurück. Das Ergebnis hat weder Zeitzone noch Offset. Es beschreibt also eine Uhrzeit, wie sie auf einer Wanduhr steht, und keinen festen Zeitpunkt auf der Zeitachse.
Die Uhrzeit ist optional. Lässt man sie weg, gilt Mitternacht (00:00:00). Übergeben kann man ein Temporal.PlainTime, ein Objekt mit Zeitfeldern wie { hour: 14, minute: 30 } (fehlende Felder sind 0) oder einen Zeit-String nach ISO 8601, etwa "09:15:30".
Typische Einsatzfälle sind Termine: Ein Datum aus einem Datumsfeld wird mit einer Uhrzeit aus einem Zeitfeld zu einem Termin zusammengesetzt. Braucht man danach einen echten Zeitpunkt, wandelt man das Ergebnis mit toZonedDateTime() in eine bestimmte Zeitzone um. Das Kalendersystem des ursprünglichen Datums (z. B. hebrew oder japanese) wird übernommen.
Wie alle Temporal-Objekte ist PlainDate unveränderlich. Die Methode ändert das Ausgangsobjekt nicht, sondern gibt immer ein neues Objekt zurück.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $time | Temporal.PlainTime | object | string | Mitternacht (00:00:00) | Die Uhrzeit, die mit dem Datum kombiniert wird. Möglich sind ein Temporal.PlainTime, ein Objekt mit den Feldern hour, minute, second, millisecond, microsecond, nanosecond oder ein ISO-8601-Zeit-String. Wird der Wert weggelassen oder ist er undefined, gilt Mitternacht. |
Rückgabewert
Temporal.PlainDateTime mit dem Datum dieser Instanz, der angegebenen Uhrzeit und demselben Kalendersystem.Beispiele
Uhrzeit auf verschiedene Arten angeben
const datum = Temporal.PlainDate.from("2024-03-15");
// Ohne Argument: Mitternacht
console.log(datum.toPlainDateTime().toString());
// Objekt mit Zeitfeldern (fehlende Felder sind 0)
console.log(datum.toPlainDateTime({ hour: 14, minute: 30 }).toString());
// ISO-Zeit-String
console.log(datum.toPlainDateTime("09:15:30").toString());
Termin aus Formularfeldern zusammensetzen
// Werte aus <input type="date"> und <input type="time">
const datumEingabe = "2024-06-01";
const zeitEingabe = "18:45";
const tag = Temporal.PlainDate.from(datumEingabe);
const uhrzeit = Temporal.PlainTime.from(zeitEingabe);
const termin = tag.toPlainDateTime(uhrzeit);
console.log(termin.toString());
console.log(termin.toLocaleString("de-DE", { dateStyle: "full", timeStyle: "short" }));
Weiter zu einem echten Zeitpunkt in einer Zeitzone
const datum = Temporal.PlainDate.from("2024-03-15");
const start = datum
.toPlainDateTime({ hour: 14, minute: 30 })
.toZonedDateTime("Europe/Berlin");
console.log(start.toString());
console.log(start.toInstant().toString());
Kalendersystem bleibt erhalten
const datum = Temporal.PlainDate.from("2024-03-15[u-ca=hebrew]");
const dt = datum.toPlainDateTime({ hour: 8 });
console.log(dt.toString());
console.log(dt.calendarId);
// Wichtig · Fallstricke
- Browser-Unterstützung: Temporal ist neu. Es läuft in Firefox ab Version 139 und in Chromium-Browsern ab Version 144, Safari unterstützt es noch nicht. Für den produktiven Einsatz empfiehlt sich ein Polyfill wie
@js-temporal/polyfillodertemporal-polyfill. - Kein Zeitpunkt: Das Ergebnis hat keine Zeitzone. Zum Speichern oder Vergleichen echter Zeitpunkte sollte man es mit
toZonedDateTime()umwandeln. Wer direkt einen zonierten Wert braucht, kann auchPlainDate.prototype.toZonedDateTime({ timeZone, plainTime })nutzen. - Fehler: Ein ungültiger Zeit-String (z. B.
"25:00") löst einenRangeErroraus. Ein Wert mit falschem Typ (z. B. eine Zahl) löst einenTypeErroraus. - Datumsanteile im String: Ein vollständiger Datum-Zeit-String wie
"2020-01-01T10:00"wird als Uhrzeit gelesen. Sein Datumsteil wird ignoriert, es gilt immer das Datum der Instanz. - Legacy-API: Anders als bei
Datewird nicht still in die lokale Zeitzone umgerechnet. So entstehen keine versteckten Verschiebungen rund um die Umstellung auf Sommerzeit.