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

Temporal.PlainYearMonth.prototype.daysInYear

Eigenschaft

Gibt die Anzahl der Tage im Jahr eines <code>Temporal.PlainYearMonth</code> als positive Ganzzahl zurück, z. B. 365 oder 366 im ISO-Kalender.

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

Signatur

get Temporal.PlainYearMonth.prototype.daysInYear

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

Typ
number
Beschreibung
Positive Ganzzahl mit der Anzahl der Tage im Jahr, abhängig vom Kalender des Objekts (ISO: 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);
365 366

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()}`);
95.08 € für 2024-02

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);
5784 385 1445 354

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`);
50.0 % des Jahres 2024 sind vorbei

// Wichtig · Fallstricke

  • Nur lesbar: Die Eigenschaft ist ein Getter. Eine Zuweisung wie ym.daysInYear = 360 hat keine Wirkung und löst im Strict Mode einen TypeError aus. Für ein anderes Jahr erzeugst du mit with({ year }) oder add() ein neues Objekt.
  • Kalenderabhängig: Gehe nicht von 365/366 aus, wenn das Objekt einen anderen Kalender als iso8601 nutzen 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 ist daysInYear === 366 als 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/polyfill oder temporal-polyfill.