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

Temporal.PlainYearMonth.prototype.year

Eigenschaft

Liefert das Jahr eines <code>Temporal.PlainYearMonth</code> als Ganzzahl, gezählt vom Beginn des Epochenjahres des jeweiligen Kalenders. Kann auch 0 oder negativ sein.

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

Signatur

get Temporal.PlainYearMonth.prototype.year

Beschreibung

Die Zugriffseigenschaft year gibt das Jahr eines Temporal.PlainYearMonth-Objekts als Ganzzahl zurück. Gezählt wird ab dem Epochenjahr des verwendeten Kalenders. Im Standardkalender iso8601 ist das einfach das ISO-Jahr, also zum Beispiel 2024.

Anders als eraYear hängt year nicht von Ären ab. Der Wert läuft ohne Unterbrechung weiter: Jahre vor dem Epochenjahr sind 0 oder negativ. Deshalb eignet sich year gut zum Rechnen, Sortieren und Vergleichen. era und eraYear sind dagegen für eine Anzeige gedacht, die Menschen lesen, etwa „101 v. Chr.“.

Die Eigenschaft kann nur gelesen werden, sie hat keinen Setter. Ein Objekt mit einem anderen Jahr erzeugt man mit with({ year }) oder mit Rechenmethoden wie add() und subtract(). Das ursprüngliche Objekt bleibt dabei unverändert, denn alle Temporal-Objekte sind unveränderlich.

Beispiele

Jahr eines ISO-Jahr-Monats auslesen

const abrechnung = Temporal.PlainYearMonth.from("2021-07");
console.log(abrechnung.year);
console.log(abrechnung.month);
2021 7

year im Vergleich zu era/eraYear (Kalender gregory)

const antike = Temporal.PlainYearMonth.from("-000100-01").withCalendar("gregory");
console.log(antike.year);    // fortlaufend, kann negativ sein
console.log(antike.era);     // Ära
console.log(antike.eraYear); // Jahr innerhalb der Ära
-100 bce 101

Jahr mit with() ändern

const ym = Temporal.PlainYearMonth.from("2021-07");
const naechstesJahr = ym.with({ year: ym.year + 1 });
console.log(naechstesJahr.toString());
console.log(ym.toString()); // Original bleibt unverändert
2022-07 2021-07

Abrechnungsmonate nach Jahr gruppieren

const monate = ["2023-11", "2023-12", "2024-01", "2024-02"]
  .map((s) => Temporal.PlainYearMonth.from(s));

const proJahr = Object.groupBy(monate, (ym) => ym.year);
console.log(Object.keys(proJahr));
console.log(proJahr[2024].map(String));
[ '2023', '2024' ] [ '2024-01', '2024-02' ]

// Wichtig · Fallstricke

  • Nur lesbar: Eine Zuweisung wie ym.year = 2030 ändert nichts. Im Strict Mode löst sie einen TypeError aus. Stattdessen with({ year }) verwenden.
  • Nicht mit eraYear verwechseln: In Kalendern mit Ären, etwa gregory oder japanese, ist year fortlaufend und kann negativ sein. eraYear beginnt dagegen in jeder Ära neu. Für Anzeigen era und eraYear nutzen oder gleich toLocaleString().
  • Kalenderabhängig: In Kalendern, die nicht auf ISO beruhen, etwa hebrew oder islamic-civil, weicht year deutlich vom ISO-Jahr ab. Das ISO-Jahr erhält man mit ym.withCalendar(\"iso8601\").year.
  • Browser-Unterstützung: Temporal ist neu und wird noch nicht überall unterstützt: Firefox ab 139, Chromium ab 144, Safari bisher nicht. Für ältere Umgebungen gibt es ein Polyfill wie @js-temporal/polyfill oder temporal-polyfill.