Signatur
Beschreibung
Die Methode toPlainDate() verwirft den Uhrzeitanteil (Stunde bis Nanosekunde) eines Temporal.PlainDateTime und liefert ein neues Temporal.PlainDate. Der Kalender (z. B. iso8601, gregory, japanese) bleibt dabei erhalten.
Das braucht man immer dann, wenn nur noch der Kalendertag wichtig ist: zum Gruppieren von Ereignissen nach Tag, zum Vergleich zweier Zeitpunkte auf „gleicher Tag?“, zur Berechnung von Tagesdifferenzen ohne Einfluss der Uhrzeit oder zur Ausgabe eines reinen Datums.
Wie alle Temporal-Objekte sind PlainDateTime und PlainDate unveränderlich: Das ursprüngliche Objekt bleibt unverändert, es wird immer eine neue Instanz erzeugt. Es wird nicht gerundet – eine Uhrzeit wie 23:59:59.999 ergibt trotzdem denselben Tag.
Rückgabewert
Temporal.PlainDate mit Jahr, Monat und Tag dieses Datums-Zeit-Werts im selben Kalendersystem.Beispiele
Datumsanteil extrahieren
const termin = Temporal.PlainDateTime.from('2025-03-14T15:30:45');
const datum = termin.toPlainDate();
console.log(datum.toString());
console.log(datum instanceof Temporal.PlainDate);
console.log(termin.toString()); // Original bleibt unverändert
Prüfen, ob zwei Zeitpunkte am selben Tag liegen
const istSelberTag = (a, b) =>
a.toPlainDate().equals(b.toPlainDate());
const start = Temporal.PlainDateTime.from('2025-06-01T08:00');
const ende = Temporal.PlainDateTime.from('2025-06-01T23:45');
const naechster = Temporal.PlainDateTime.from('2025-06-02T00:15');
console.log(istSelberTag(start, ende));
console.log(istSelberTag(ende, naechster));
Ereignisse nach Kalendertag gruppieren
const ereignisse = [
'2025-05-10T09:15',
'2025-05-10T17:40',
'2025-05-11T11:00'
].map((s) => Temporal.PlainDateTime.from(s));
const proTag = Map.groupBy(ereignisse, (e) => e.toPlainDate().toString());
for (const [tag, liste] of proTag) {
console.log(tag, liste.length);
}
Tagesdifferenz ohne Einfluss der Uhrzeit
const a = Temporal.PlainDateTime.from('2025-01-01T23:00');
const b = Temporal.PlainDateTime.from('2025-01-03T01:00');
console.log(a.until(b).toString()); // exakte Dauer
console.log(a.toPlainDate().until(b.toPlainDate()).days); // Kalendertage
// Wichtig · Fallstricke
- Kompatibilität: Temporal ist erst in neueren Browsern verfügbar (Firefox 139+, Chrome/Edge 144+); Safari und ältere Node.js-Versionen benötigen einen Polyfill wie
@js-temporal/polyfillodertemporal-polyfill. Vorher pertypeof Temporal !== 'undefined'prüfen. - Die Uhrzeit wird abgeschnitten, nicht gerundet –
23:59bleibt beim selben Tag. - Der Kalender wird übernommen: Beim Vergleich mit
equals()müssen beide Datumswerte denselben Kalender haben, sonst ist das Ergebnisfalse. - Für den umgekehrten Weg (Datum + Uhrzeit) nutzt man
PlainDate.prototype.toPlainDateTime(time); nur die Uhrzeit lieferttoPlainTime(). - Ältere Temporal-Entwürfe kannten zusätzlich
toPlainYearMonth()/toPlainMonthDay()direkt aufPlainDateTime; diese wurden entfernt – den Umweg übertoPlainDate()gehen.