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

Temporal.ZonedDateTime.prototype.toPlainDateTime()

Methode

Gibt ein neues <code>Temporal.PlainDateTime</code> mit Datum und Uhrzeit (Wanduhrzeit) dieses <code>ZonedDateTime</code> zurück. Zeitzone und Offset gehen dabei verloren.

seit JavaScript Temporal (TC39 Stage 3); Firefox 139+, Chrome 144+ Kategorie: method-property

Signatur

Temporal.ZonedDateTime.prototype.toPlainDateTime()

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

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

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'
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());
2024-07-01T10:00:00-04:00[America/New_York] 2024-07-01T04:00:00-04:00[America/New_York]

// 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 disambiguation von toZonedDateTime().
  • Wollen Sie denselben Zeitpunkt in einer anderen Zeitzone darstellen, nehmen Sie withTimeZone() und nicht toPlainDateTime() plus toZonedDateTime().
  • Brauchen Sie nur das Datum oder nur die Uhrzeit, gibt es dafür toPlainDate() und toPlainTime().
  • 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/polyfill oder temporal-polyfill.