Start · Sprachen · JavaScript · Referenz · Temporal.PlainDate.prototype.day

Temporal.PlainDate.prototype.day

Eigenschaft

Liefert den 1-basierten Tag im Monat eines <code>Temporal.PlainDate</code> als positive Ganzzahl, abhängig vom Kalender des Datums.

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

Signatur

get Temporal.PlainDate.prototype.day

Beschreibung

Die Accessor-Eigenschaft day gibt den Tag innerhalb des Monats eines Temporal.PlainDate zurück. Die Zählung beginnt bei 1 und endet bei daysInMonth. Anders als bei Date.prototype.getDate() gibt es hier keine Zeitzone, die das Ergebnis verfälschen könnte, denn ein PlainDate ist ein reines Kalenderdatum ohne Uhrzeit.

Der Wert hängt vom Kalendersystem des Datums ab. Im ISO-8601-Kalender (iso8601) und im gregorianischen Kalender entspricht er dem bekannten Tag im Monat. In anderen Kalendern (z. B. hebrew, islamic-umalqura, chinese) liefert day den Tag im Monat dieses Kalenders.

Die Eigenschaft kann nur gelesen werden; ihr Setter ist undefined. Temporal-Objekte sind unveränderlich. Brauchst du ein Datum mit einem anderen Tag, erzeugst du mit with({ day }) eine neue Instanz. Für Berechnungen wie „drei Tage später“ solltest du add() nehmen und day nicht von Hand ändern.

Rückgabewert

Typ
number
Beschreibung
Positive Ganzzahl von 1 bis daysInMonth: der Tag im Monat im Kalender des Datums.

Beispiele

Tag aus einem ISO-Datum lesen

const datum = Temporal.PlainDate.from("2024-03-15");
console.log(datum.day);
console.log(datum.month, datum.year);
15 3 2024

Monatsersten und Monatsletzten bestimmen

const heute = Temporal.PlainDate.from("2024-02-10");
const erster = heute.with({ day: 1 });
const letzter = heute.with({ day: heute.daysInMonth });
console.log(erster.toString(), letzter.toString());
console.log(`Noch ${heute.daysInMonth - heute.day} Tage im Monat`);
2024-02-01 2024-02-29 Noch 19 Tage im Monat

Tag in einem anderen Kalender

const iso = Temporal.PlainDate.from("2024-03-15");
const hebr = iso.withCalendar("hebrew");
console.log(iso.day);   // ISO-Tag
console.log(hebr.day);  // Tag im hebräischen Monat
console.log(hebr.monthCode);
15 5 M06L

Fälligkeit am 15. eines Monats prüfen

const istZahltag = (datum) => datum.day === 15;
const termine = ["2024-05-14", "2024-05-15", "2024-06-15"]
  .map((s) => Temporal.PlainDate.from(s))
  .filter(istZahltag)
  .map(String);
console.log(termine);
[ '2024-05-15', '2024-06-15' ]

// Wichtig · Fallstricke

  • Nur lesbar: datum.day = 5 ändert nichts; im Strict Mode wird ein TypeError geworfen. Nimm stattdessen datum.with({ day: 5 }).
  • Überlauf bei with(): Standardmäßig gilt overflow: \"constrain\", deshalb wird with({ day: 31 }) im Februar auf den letzten Tag des Monats begrenzt. Mit { overflow: \"reject\" } wird stattdessen ein RangeError geworfen.
  • Kalenderabhängig: In Nicht-ISO-Kalendern weicht day vom ISO-Tag ab. In manchen Kalendern können Tage im Monat übersprungen werden, deshalb ist day dort nicht unbedingt fortlaufend. Für den ISO-Wert rufst du vorher withCalendar(\"iso8601\") auf.
  • Nicht verwechseln: Den Wochentag liefert dayOfWeek, den Tag im Jahr dayOfYear.
  • Kompatibilität: Temporal wird bisher nur von einem Teil der Browser nativ unterstützt (etwa Firefox 139+ und Chromium ab Version 144). Für breite Unterstützung brauchst du einen Polyfill wie @js-temporal/polyfill oder temporal-polyfill. Die Versionsangaben solltest du vor dem Einsatz mit einer aktuellen Kompatibilitätstabelle prüfen.