Start · Sprachen · JavaScript · Referenz · Temporal.PlainDate.prototype.toPlainDateTime()

Temporal.PlainDate.prototype.toPlainDateTime()

Methode

Kombiniert das Datum eines <code>Temporal.PlainDate</code> mit einer Uhrzeit und gibt ein neues <code>Temporal.PlainDateTime</code> im selben Kalendersystem zurück.

seit JavaScript ES2026 (Temporal); Firefox 139+, Chrome 144+, sons Kategorie: method-property

Signatur

Temporal.PlainDate.prototype.toPlainDateTime(time)

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

Typ
Temporal.PlainDateTime
Beschreibung
Ein neues 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());
2024-03-15T00:00:00 2024-03-15T14:30:00 2024-03-15T09:15:30

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" }));
2024-06-01T18:45:00 Samstag, 1. Juni 2024 um 18:45

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());
2024-03-15T14:30:00+01:00[Europe/Berlin] 2024-03-15T13:30:00Z

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);
2024-03-15T08:00:00[u-ca=hebrew] hebrew

// 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/polyfill oder temporal-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 auch PlainDate.prototype.toZonedDateTime({ timeZone, plainTime }) nutzen.
  • Fehler: Ein ungültiger Zeit-String (z. B. "25:00") löst einen RangeError aus. Ein Wert mit falschem Typ (z. B. eine Zahl) löst einen TypeError aus.
  • 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 Date wird nicht still in die lokale Zeitzone umgerechnet. So entstehen keine versteckten Verschiebungen rund um die Umstellung auf Sommerzeit.