Signatur
Beschreibung
Die Methode toPlainDateTime() liest aus einem Temporal.ZonedDateTime die lokale Wanduhrzeit aus, also Jahr, Monat, Tag, Stunde, Minute, Sekunde und die Sekundenbruchteile bis zur Nanosekunde. Diese Werte landen in einem neuen Temporal.PlainDateTime. Den Kalender übernimmt sie mit. Die Zeitzone und der UTC-Offset werden dagegen weggelassen.
Das ist nützlich, wenn Sie nur noch mit „Kalender und Uhrzeit“ arbeiten wollen und kein fester Zeitpunkt mehr gebraucht wird. Beispiele sind Formulare mit <input type="datetime-local">, das Speichern einer Termin-Wanduhrzeit, die später in einer anderen Zeitzone neu ausgewertet werden soll, oder Vergleiche und Rechnungen, bei denen Sommerzeit-Wechsel keine Rolle spielen sollen.
Weil der Bezug zur Zeitzone fehlt, beschreibt ein PlainDateTime keinen eindeutigen Zeitpunkt mehr. Mit plainDateTime.toZonedDateTime(timeZone) kommen Sie wieder zu einem ZonedDateTime. Ob dabei derselbe Zeitpunkt herauskommt, hängt von der gewählten Zeitzone und vom Parameter disambiguation ab.
Rückgabewert
Temporal.PlainDateTime mit denselben Datums- und Uhrzeitfeldern (bis zur Nanosekunde) und demselben Kalender wie das ursprüngliche ZonedDateTime, aber ohne Zeitzone und Offset.Beispiele
Wanduhrzeit aus einem ZonedDateTime lesen
const zdt = Temporal.ZonedDateTime.from('2024-03-15T14:30:00+01:00[Europe/Berlin]');
const pdt = zdt.toPlainDateTime();
console.log(pdt.toString());
console.log(pdt instanceof Temporal.PlainDateTime);
Wert für ein datetime-local-Eingabefeld erzeugen
// Aktuelle Zeit in der Zeitzone des Nutzers
const now = Temporal.Now.zonedDateTimeISO();
// datetime-local erwartet 'YYYY-MM-DDTHH:mm' ohne Offset
const value = now
.toPlainDateTime()
.round({ smallestUnit: 'minute' })
.toString();
console.log(value); // z. B. '2024-06-01T09:42'
Dieselbe Wanduhrzeit in eine andere Zeitzone übertragen
const meetingBerlin = Temporal.ZonedDateTime.from('2024-07-01T10:00[Europe/Berlin]');
// Gleiche Uhrzeit, aber in New York (anderer Zeitpunkt!)
const sameClockNY = meetingBerlin
.toPlainDateTime()
.toZonedDateTime('America/New_York');
// Zum Vergleich: derselbe Zeitpunkt in New York
const sameInstantNY = meetingBerlin.withTimeZone('America/New_York');
console.log(sameClockNY.toString());
console.log(sameInstantNY.toString());
// Wichtig · Fallstricke
- Informationsverlust: Zeitzone und Offset fallen weg. Wandeln Sie das Ergebnis zurück, gibt es in der Stunde vor oder nach einer Sommerzeit-Umstellung mehrdeutige oder gar nicht existierende Uhrzeiten. Das Verhalten steuern Sie mit der Option
disambiguationvontoZonedDateTime(). - Wollen Sie denselben Zeitpunkt in einer anderen Zeitzone darstellen, nehmen Sie
withTimeZone()und nichttoPlainDateTime()plustoZonedDateTime(). - Brauchen Sie nur das Datum oder nur die Uhrzeit, gibt es dafür
toPlainDate()undtoPlainTime(). - Den Kalender übernimmt die Methode. Das Ergebnis ist also nicht immer ISO-basiert.
- Kompatibilität: Temporal gibt es bisher nur in neueren Browsern (Firefox 139+, Chrome 144+). Für andere Umgebungen und ältere Node.js-Versionen brauchen Sie einen Polyfill, etwa
@js-temporal/polyfillodertemporal-polyfill.