Signatur
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);
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
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
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));
// Wichtig · Fallstricke
- Nur lesbar: Eine Zuweisung wie
ym.year = 2030ändert nichts. Im Strict Mode löst sie einenTypeErroraus. Stattdessenwith({ year })verwenden. - Nicht mit
eraYearverwechseln: In Kalendern mit Ären, etwagregoryoderjapanese, istyearfortlaufend und kann negativ sein.eraYearbeginnt dagegen in jeder Ära neu. Für AnzeigeneraunderaYearnutzen oder gleichtoLocaleString(). - Kalenderabhängig: In Kalendern, die nicht auf ISO beruhen, etwa
hebrewoderislamic-civil, weichtyeardeutlich vom ISO-Jahr ab. Das ISO-Jahr erhält man mitym.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/polyfillodertemporal-polyfill.