Start · Sprachen · JavaScript · Referenz · Temporal.PlainYearMonth.prototype.month

Temporal.PlainYearMonth.prototype.month

Eigenschaft

Gibt den 1-basierten Monatsindex (positive Ganzzahl) innerhalb des Jahres eines <code>Temporal.PlainYearMonth</code> im jeweiligen Kalender zurück.

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

Signatur

get Temporal.PlainYearMonth.prototype.month

Beschreibung

Die Zugriffs-Eigenschaft month liefert die Position des Monats innerhalb seines Jahres, beginnend bei 1. Im ISO-8601-Kalender entspricht das den bekannten Werten von 1 (Januar) bis 12 (Dezember). Anders als beim alten Date-Objekt, bei dem getMonth() nullbasiert zählt, gibt es hier keine Umrechnung mit + 1.

Der Wert hängt vom Kalender der Instanz ab. In Kalendern mit Schaltmonaten (z. B. hebrew oder chinese) verschiebt sich die Nummerierung in Schaltjahren: Derselbe benannte Monat kann in verschiedenen Jahren einen anderen month-Index haben. Für eine jahresübergreifend stabile Kennung eines Monats ist daher monthCode (z. B. "M05L") die richtige Wahl; month eignet sich vor allem zum Zählen, Sortieren und Iterieren innerhalb eines Jahres (Bereich 1 bis monthsInYear).

Die Eigenschaft ist schreibgeschützt – Temporal.PlainYearMonth-Objekte sind unveränderlich. Um einen anderen Monat zu erhalten, erzeugt man mit with(), add() oder subtract() eine neue Instanz.

Rückgabewert

Typ
number
Beschreibung
Positive Ganzzahl von 1 bis monthsInYear (im ISO-Kalender 1–12), die den Monatsindex im Jahr angibt.

Beispiele

Monat eines Jahres-Monats auslesen

const abrechnung = Temporal.PlainYearMonth.from("2024-03");

console.log(abrechnung.year);  // Jahr
console.log(abrechnung.month); // 1-basiert, kein +1 nötig
2024 3

Monat ändern mit with() und add()

const start = Temporal.PlainYearMonth.from("2024-11");

// Neue Instanz mit anderem Monat – das Original bleibt unverändert
const dezember = start.with({ month: 12 });
const naechster = dezember.add({ months: 1 });

console.log(start.month, dezember.month, naechster.month, naechster.year);
11 12 1 2025

Alle Monate eines Jahres durchlaufen

const jahr = Temporal.PlainYearMonth.from("2025-01");

const labels = [];
for (let m = 1; m <= jahr.monthsInYear; m++) {
  const ym = jahr.with({ month: m });
  labels.push(`${ym.year}-${String(ym.month).padStart(2, "0")}: ${ym.daysInMonth} Tage`);
}
console.log(labels.slice(0, 3).join("\n"));
2025-01: 31 Tage 2025-02: 28 Tage 2025-03: 31 Tage

month vs. monthCode im hebräischen Kalender

// 5784 ist ein hebräisches Schaltjahr mit Adar I (M05L)
const adar1 = Temporal.PlainYearMonth.from({ year: 5784, monthCode: "M05L", calendar: "hebrew" });
const adar = Temporal.PlainYearMonth.from({ year: 5784, monthCode: "M06", calendar: "hebrew" });

console.log(adar1.month, adar1.monthCode);
console.log(adar.month, adar.monthCode);
6 M05L 7 M06

// Wichtig · Fallstricke

  • 1-basiert: Im Gegensatz zu Date.prototype.getMonth() (0–11) beginnt month bei 1. Beim Portieren alten Codes das + 1/- 1 entfernen.
  • Kalenderabhängig: In Kalendern mit Schaltmonaten ist month kein stabiler Bezeichner. Zum Speichern oder Vergleichen „desselben“ Monats über Jahre hinweg monthCode verwenden.
  • Nur lesbar: Eine Zuweisung wie ym.month = 5 hat keine Wirkung (im Strict Mode TypeError). Stattdessen ym.with({ month: 5 }) nutzen.
  • Keine Monatsnamen: Für lokalisierte Namen toLocaleString() bzw. Intl.DateTimeFormat verwenden – der Kalender der Instanz muss dabei zum Kalender der Locale passen, sonst wird ein RangeError geworfen.
  • Kompatibilität: Temporal ist erst in neueren Browsern verfügbar (Firefox 139+, Chrome/Edge 144+); Safari und ältere Node.js-Versionen benötigen einen Polyfill wie @js-temporal/polyfill oder temporal-polyfill.