Start · Sprachen · JavaScript · Referenz · Temporal.PlainDateTime.prototype.toPlainDate()

Temporal.PlainDateTime.prototype.toPlainDate()

Methode

Gibt ein neues <code>Temporal.PlainDate</code> mit dem Datumsanteil (Jahr, Monat, Tag) dieses <code>PlainDateTime</code> im selben Kalendersystem zurück.

seit JavaScript ES2026 (Temporal, Stage 4) – Firefox 139+, Chrome Kategorie: method-property

Signatur

Temporal.PlainDateTime.prototype.toPlainDate()

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

Typ
Temporal.PlainDate
Beschreibung
Ein neues 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
2025-03-14 true 2025-03-14T15:30:45

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));
true false

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);
}
2025-05-10 2 2025-05-11 1

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
P1DT2H 2

// 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/polyfill oder temporal-polyfill. Vorher per typeof Temporal !== 'undefined' prüfen.
  • Die Uhrzeit wird abgeschnitten, nicht gerundet – 23:59 bleibt beim selben Tag.
  • Der Kalender wird übernommen: Beim Vergleich mit equals() müssen beide Datumswerte denselben Kalender haben, sonst ist das Ergebnis false.
  • Für den umgekehrten Weg (Datum + Uhrzeit) nutzt man PlainDate.prototype.toPlainDateTime(time); nur die Uhrzeit liefert toPlainTime().
  • Ältere Temporal-Entwürfe kannten zusätzlich toPlainYearMonth()/toPlainMonthDay() direkt auf PlainDateTime; diese wurden entfernt – den Umweg über toPlainDate() gehen.