Signatur
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
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);
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);
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(", "));
Koptischer Kalender mit 13 Monaten
const koptisch = Temporal.PlainDate.from("2024-09-01").withCalendar("coptic");
console.log(koptisch.monthsInYear);
// 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 stattdessendate.monthsInYear. monthist nicht gleichmonthCode: 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 SiemonthCode.- 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 mitwith()oderwithCalendar(). - 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/polyfillodertemporal-polyfill. Prüfen Sie die Unterstützung vorher mittypeof Temporal !== \"undefined\".