Start · Sprachen · JavaScript · Referenz · Temporal.ZonedDateTime.prototype.monthCode

Temporal.ZonedDateTime.prototype.monthCode

Eigenschaft

Liefert einen kalenderabhängigen String wie <code>"M05"</code> oder <code>"M05L"</code>, der den Monat des Datums eindeutig und jahresübergreifend kennzeichnet.

seit JavaScript ES2026 (Temporal); Firefox 139+, Chrome 144+, Safa Kategorie: method-property

Signatur

get Temporal.ZonedDateTime.prototype.monthCode

Beschreibung

Die Accessor-Eigenschaft monthCode gibt den Monat einer Temporal.ZonedDateTime als String im Format "M" + zweistellige Monatsnummer zurück, also z. B. "M01" bis "M12". In Kalendern mit Schaltmonaten, etwa dem hebräischen oder dem chinesischen Kalender, bekommt ein Schaltmonat zusätzlich das Suffix "L" (z. B. "M05L" für Adar I im hebräischen Kalender).

Anders als month ist monthCode unabhängig vom Jahr. month ist nur die fortlaufende Position im jeweiligen Jahr und kann sich in Schaltjahren verschieben. Deshalb eignet sich monthCode für wiederkehrende Ereignisse wie Geburtstage oder Feiertage. Man speichert monthCode und day und baut daraus für jedes Jahr das passende Datum.

Im ISO-8601-Kalender (iso8601) und im gregorianischen Kalender entspricht monthCode immer "M" + month mit führender Null. Die Eigenschaft ist nur lesbar. Um den Monat zu ändern, benutzt man with({ monthCode }). Das erzeugt eine neue Instanz, weil Temporal-Objekte unveränderlich sind.

Rückgabewert

Typ
string
Beschreibung
Monatscode im Format "M" + zwei Ziffern, bei Schaltmonaten mit angehängtem "L", z. B. "M03" oder "M05L".

Beispiele

Monatscode im ISO-Kalender auslesen

const zdt = Temporal.ZonedDateTime.from("2024-07-15T09:30:00[Europe/Berlin]");
console.log(zdt.month);     // Position im Jahr
console.log(zdt.monthCode); // jahresunabhängiger Code
7 "M07"

Schaltmonat im hebräischen Kalender

// Das hebräische Jahr 5784 ist ein Schaltjahr mit Adar I (M05L)
const zdt = Temporal.ZonedDateTime.from("2024-03-01T12:00:00[Asia/Jerusalem]")
  .withCalendar("hebrew");
console.log(zdt.month, zdt.monthCode, zdt.monthsInYear);
6 "M05L" 13

Jährlich wiederkehrenden Termin über monthCode berechnen

const termin = Temporal.ZonedDateTime.from("2023-11-20T18:00:00[Europe/Berlin]");
const { monthCode, day } = termin;

// Gleicher Termin im nächsten Jahr, unabhängig von Schaltmonaten
const naechstes = termin.with({ year: termin.year + 1, monthCode, day });
console.log(naechstes.toString());
2024-11-20T18:00:00+01:00[Europe/Berlin]

Monat per monthCode setzen

const zdt = Temporal.ZonedDateTime.from("2024-01-31T08:00:00[Europe/Berlin]");
// Standard-Überlauf "constrain": 31. Feb. → 29. Feb. 2024
const feb = zdt.with({ monthCode: "M02" });
console.log(feb.toPlainDate().toString());
2024-02-29

// Wichtig · Fallstricke

  • Nicht mit month verwechseln: Im hebräischen Kalender ist z. B. month 6 in einem Schaltjahr "M05L", in einem normalen Jahr aber "M06". Wiederkehrende Daten sollte man deshalb immer über monthCode speichern.
  • Übergibt man in with() oder from() sowohl month als auch monthCode und passen die beiden nicht zusammen, wird ein RangeError geworfen.
  • Ein Schaltmonat-Code wie "M05L" in einem Jahr ohne Schaltmonat wird mit overflow: "constrain" auf einen benachbarten Monat abgebildet. Mit overflow: "reject" gibt es einen RangeError.
  • Die Eigenschaft ist nur lesbar. Eine Zuweisung wird ignoriert, im Strict Mode gibt es einen TypeError.
  • Kompatibilität: Temporal gibt es erst seit Kurzem in Browsern (Firefox 139+, Chrome 144+). Safari und ältere Umgebungen brauchen ein Polyfill, z. B. @js-temporal/polyfill oder temporal-polyfill. Welche Kalender außerhalb von ISO unterstützt werden, hängt von den Intl-Daten der Umgebung ab.