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

Temporal.PlainDate.prototype.monthsInYear

Eigenschaft

Gibt die Anzahl der Monate im Jahr des Datums als positive ganze Zahl zurück. Der Wert hängt vom Kalender ab, z. B. 12 im ISO-Kalender und 12 oder 13 im hebräischen Kalender.

seit JavaScript ES2026 (Temporal) – Firefox 139+, Chrome/Edge 144+ Kategorie: method-property

Signatur

get Temporal.PlainDate.prototype.monthsInYear

Beschreibung

Die Zugriffs-Eigenschaft monthsInYear eines Temporal.PlainDate gibt an, wie viele Monate das Jahr hat, in dem das Datum liegt. Die Eigenschaft ist schreibgeschützt: Sie hat einen Getter, aber keinen Setter. Der Wert hängt vom Kalender der Instanz ab (calendarId).

Im Standardkalender iso8601 (und im gregorianischen Kalender) ist der Wert immer 12. Bei Lunisolarkalendern wie dem hebräischen (hebrew) oder dem chinesischen Kalender (chinese, dangi) wird manchmal ein Schaltmonat eingefügt. Dann hat das Jahr 13 Monate. Der koptische und der äthiopische Kalender haben immer 13 Monate (12 Monate zu 30 Tagen und einen kurzen Zusatzmonat).

Nutzen Sie monthsInYear, wenn Sie über alle Monate eines Jahres gehen, Monatsauswahlen bauen oder Werte prüfen müssen. Schreiben Sie nie fest 12 in den Code, wenn Ihre Anwendung mehrere Kalender unterstützen soll. Beachten Sie: Die Eigenschaft month ist ein fortlaufender Index von 1 bis monthsInYear. Die stabile Kennung eines Monats über Jahre hinweg ist dagegen monthCode, z. B. "M05L" für einen Schaltmonat.

Rückgabewert

Typ
number
Beschreibung
Positive ganze Zahl: die Anzahl der Monate im Kalenderjahr des Datums. Im ISO-Kalender immer 12, in anderen Kalendern auch 13.

Beispiele

ISO-Kalender: immer 12 Monate

const datum = Temporal.PlainDate.from("2024-03-15");
console.log(datum.calendarId);
console.log(datum.monthsInYear);
iso8601 12

Hebräischer Kalender: Schaltjahr und Normaljahr

const schaltjahr = Temporal.PlainDate.from("2024-03-15").withCalendar("hebrew");
const normaljahr = Temporal.PlainDate.from("2025-03-15").withCalendar("hebrew");

console.log(schaltjahr.year, schaltjahr.monthsInYear);
console.log(normaljahr.year, normaljahr.monthsInYear);
5784 13 5785 12

Alle Monate eines Jahres durchlaufen, unabhängig vom Kalender

const monateDesJahres = (datum) => {
  const monate = [];
  for (let m = 1; m <= datum.monthsInYear; m++) {
    monate.push(datum.with({ month: m, day: 1 }).monthCode);
  }
  return monate;
};

const hebr = Temporal.PlainDate.from("2024-03-15").withCalendar("hebrew");
console.log(monateDesJahres(hebr).join(", "));
M01, M02, M03, M04, M05, M05L, M06, M07, M08, M09, M10, M11, M12

Koptischer Kalender mit 13 Monaten

const koptisch = Temporal.PlainDate.from("2024-09-01").withCalendar("coptic");
console.log(koptisch.monthsInYear);
13

// Wichtig · Fallstricke

  • Nicht fest 12 annehmen: Schleifen wie for (let m = 1; m <= 12; m++) lassen in Kalendern mit Schaltmonaten den 13. Monat aus. Verwenden Sie stattdessen date.monthsInYear.
  • month ist nicht gleich monthCode: In einem hebräischen Schaltjahr verschiebt der Schaltmonat Adar I (M05L) die Nummern aller folgenden Monate. Um Monate über mehrere Jahre hinweg zu vergleichen, nutzen Sie monthCode.
  • Schreibgeschützt: Die Eigenschaft hat keinen Setter. Eine Zuweisung wird ignoriert oder wirft im Strict Mode (also auch in ES-Modulen) einen TypeError. Ein anderes Datum erzeugen Sie mit with() oder withCalendar().
  • Nicht-ISO-Kalender brauchen Intl-Daten: Welche Kalender verfügbar sind, hängt von der Intl-Unterstützung der Umgebung ab. Umgebungen mit reduzierten ICU-Daten (z. B. manche Node.js-Builds) werfen bei unbekannten Kalendern einen RangeError.
  • Kompatibilität: Temporal ist relativ neu (Firefox 139+, Chrome/Edge 144+). Safari und ältere Umgebungen brauchen einen Polyfill wie @js-temporal/polyfill oder temporal-polyfill. Prüfen Sie die Unterstützung vorher mit typeof Temporal !== \"undefined\".