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

Temporal.PlainMonthDay.prototype.day

Eigenschaft

Gibt den Tag im Monat eines <code>Temporal.PlainMonthDay</code> als positive ganze Zahl zurück. Die Zählung beginnt bei 1.

seit JavaScript Temporal (TC39-Vorschlag); Firefox 139+, Chrome 14 Kategorie: method-property

Signatur

get Temporal.PlainMonthDay.prototype.day

Beschreibung

Die Zugriffs-Eigenschaft day liefert den Tag innerhalb des Monats, den ein Temporal.PlainMonthDay darstellt. Die Zählung beginnt bei 1. Ein PlainMonthDay beschreibt ein wiederkehrendes Kalenderdatum ohne Jahr, zum Beispiel einen Geburtstag, einen Jahrestag oder einen Feiertag wie den 24. Dezember. day ist dabei der Tagesanteil dieses Datums.

Der Wert hängt vom Kalender ab. Im ISO-8601-Kalender (Standard) entspricht er dem vertrauten Tag im Monat (1–31). In anderen Kalendern (z. B. "hebrew" oder "chinese") wird der Tag nach den Regeln dieses Kalenders gezählt.

Die Eigenschaft kann nur gelesen werden, einen Setter gibt es nicht. Mit with({ day }) erzeugst du ein neues Objekt mit einem anderen Tag, denn Temporal-Objekte sind unveränderlich. Den Monat erhältst du bei PlainMonthDay über monthCode (z. B. "M12"). Eine Eigenschaft month gibt es hier nicht.

Rückgabewert

Typ
number
Beschreibung
Positive ganze Zahl ab 1: der Tag im Monat im Kalender des Objekts.

Beispiele

Tag und Monatscode auslesen

const heiligabend = Temporal.PlainMonthDay.from("12-24");
console.log(heiligabend.day);
console.log(heiligabend.monthCode);
24 "M12"

Prüfen, ob heute Geburtstag ist

const geburtstag = Temporal.PlainMonthDay.from({ monthCode: "M03", day: 15 });
const heute = Temporal.Now.plainDateISO();

const istGeburtstag =
  heute.day === geburtstag.day && heute.monthCode === geburtstag.monthCode;
// Alternativ und kürzer:
// geburtstag.equals(heute.toPlainMonthDay())

console.log(istGeburtstag ? "Alles Gute!" : `Geburtstag ist am ${geburtstag.day}. März`);
Geburtstag ist am 15. März (außer am 15. März)

Tag ändern mit with() und Begrenzung (overflow)

const md = Temporal.PlainMonthDay.from("12-24");
const silvester = md.with({ day: 31 });
console.log(silvester.toString(), md.day); // Original bleibt unverändert

// Standard overflow: "constrain" setzt 32 auf den höchsten gültigen Tag
console.log(md.with({ day: 32 }).day);

// overflow: "reject" wirft stattdessen einen Fehler
try {
  md.with({ day: 32 }, { overflow: "reject" });
} catch (e) {
  console.log(e instanceof RangeError);
}
12-31 24 31 true

29. Februar in einem Nicht-Schaltjahr

const schalttag = Temporal.PlainMonthDay.from("02-29");
console.log(schalttag.day);
console.log(schalttag.toPlainDate({ year: 2024 }).day);
console.log(schalttag.toPlainDate({ year: 2025 }).day);
29 29 28

// Wichtig · Fallstricke

  • Nur lesbar: Eine Zuweisung wie md.day = 5 ändert nichts und wirft im Strict Mode einen TypeError. Verwende with({ day }).
  • Kein month: PlainMonthDay hat nur monthCode. md.month ergibt undefined. Grund: In manchen Kalendern mit Schaltmonaten ist die Monatsnummer ohne Jahr nicht eindeutig.
  • Schalttage: "02-29" ist ein gültiges PlainMonthDay. Wird es mit toPlainDate() in ein Nicht-Schaltjahr umgewandelt, wird der Tag standardmäßig auf 28 gesetzt.
  • Kalenderabhängig: Bei einem Kalender, der nicht ISO ist, entspricht day nicht dem gregorianischen Tag. Vergleiche daher nur Werte aus demselben Kalender.
  • Kompatibilität: Temporal ist noch nicht in allen Browsern verfügbar (Firefox ab 139, Chromium ab 144; Safari bisher nicht). Für ältere Umgebungen gibt es Polyfills wie @js-temporal/polyfill oder temporal-polyfill.