Signatur
Beschreibung
Die schreibgeschützte Zugriffs-Eigenschaft daysInYear liefert die Zahl der Tage des Jahres, zu dem ein Temporal.PlainYearMonth gehört. Welcher Monat eingestellt ist, spielt dabei keine Rolle. Es zählt nur das Jahr im jeweiligen Kalendersystem.
Im ISO-8601- bzw. gregorianischen Kalender ist der Wert 365 oder in Schaltjahren 366. Andere Kalender können ganz andere Werte haben. Der hebräische Kalender kennt zum Beispiel Jahre mit 353 bis 385 Tagen, der islamische Kalender Jahre mit 354 oder 355 Tagen. Deshalb ist daysInYear für kalenderunabhängigen Code besser geeignet als eine fest eingebaute 365.
Typische Einsatzfälle sind die anteilige Umrechnung von Jahresbeträgen auf Tage, Fortschrittsanzeigen über ein Jahr und die Prüfung auf Schaltjahre. Für die Schaltjahr-Prüfung gibt es mit inLeapYear aber eine eigene, besser lesbare Eigenschaft.
Rückgabewert
365 oder 366).Beispiele
Normales Jahr und Schaltjahr vergleichen
const ym2023 = Temporal.PlainYearMonth.from("2023-05");
const ym2024 = Temporal.PlainYearMonth.from("2024-05");
console.log(ym2023.daysInYear);
console.log(ym2024.daysInYear);
Jahresbeitrag tagesgenau auf einen Monat umlegen
const jahresBeitrag = 1200; // Euro
const abrechnungsMonat = Temporal.PlainYearMonth.from({ year: 2024, month: 2 });
const proTag = jahresBeitrag / abrechnungsMonat.daysInYear;
const monatsAnteil = proTag * abrechnungsMonat.daysInMonth;
console.log(`${monatsAnteil.toFixed(2)} € für ${abrechnungsMonat.toString()}`);
Andere Kalendersysteme
const hebraeisch = Temporal.PlainYearMonth.from("2024-03-01[u-ca=hebrew]");
console.log(hebraeisch.year, hebraeisch.daysInYear);
const islamisch = Temporal.PlainDate.from("2024-03-01")
.withCalendar("islamic-umalqura")
.toPlainYearMonth();
console.log(islamisch.year, islamisch.daysInYear);
Fortschritt im Jahr berechnen
const heute = Temporal.PlainDate.from("2024-07-01");
const ym = heute.toPlainYearMonth();
const prozent = (heute.dayOfYear / ym.daysInYear) * 100;
console.log(`${prozent.toFixed(1)} % des Jahres ${ym.year} sind vorbei`);
// Wichtig · Fallstricke
- Nur lesbar: Die Eigenschaft ist ein Getter. Eine Zuweisung wie
ym.daysInYear = 360hat keine Wirkung und löst im Strict Mode einenTypeErroraus. Für ein anderes Jahr erzeugst du mitwith({ year })oderadd()ein neues Objekt. - Kalenderabhängig: Gehe nicht von 365/366 aus, wenn das Objekt einen anderen Kalender als
iso8601nutzen kann (z. B. aus einem String mit[u-ca=…]). - Schaltjahr-Prüfung: Nutze dafür besser
inLeapYear. In manchen Kalendern haben Schaltjahre einen ganzen Schaltmonat, dann istdaysInYear === 366als Prüfung falsch. - Kompatibilität: Temporal wird erst nach und nach in Browsern ausgeliefert (Firefox ab 139, Chrome ab 144). In älteren Umgebungen brauchst du ein Polyfill wie
@js-temporal/polyfillodertemporal-polyfill.