Signatur
Beschreibung
Die Zugriffs-Eigenschaft daysInYear liefert für eine Temporal.PlainDate-Instanz die Gesamtzahl der Tage des Kalenderjahrs, in dem das Datum liegt. Im ISO-8601-Kalender ("iso8601") und im gregorianischen Kalender ist der Wert 365 für Gemeinjahre und 366 für Schaltjahre.
Der Wert hängt vom Kalender des Datums ab. Bei Mondkalendern wie dem hebräischen oder dem islamischen Kalender kann ein Jahr z. B. 354, 355, 383 oder 385 Tage haben. Wer Code für mehrere Kalendersysteme schreibt, sollte deshalb daysInYear verwenden und nicht selbst mit 365/366 rechnen.
Typische Anwendungen sind Fortschrittsanzeigen („x % des Jahres vergangen“) zusammen mit dayOfYear, die anteilige Umrechnung von Jahresbeträgen (Zinsen, Gebühren) auf Tage und die Prüfung auf Schaltjahre. Für die reine Schaltjahr-Prüfung ist inLeapYear meist lesbarer.
Die Eigenschaft ist nur lesbar und hat keinen Setter. Mit with() kann man die Tageszahl nicht direkt ändern, weil sie sich aus Jahr und Kalender ergibt.
Rückgabewert
365 oder 366).Beispiele
Gemeinjahr und Schaltjahr im ISO-Kalender
const d1 = Temporal.PlainDate.from("2023-07-15");
const d2 = Temporal.PlainDate.from("2024-07-15");
console.log(d1.daysInYear);
console.log(d2.daysInYear);
console.log(d2.inLeapYear);
Jahresfortschritt in Prozent berechnen
const heute = Temporal.Now.plainDateISO();
const fortschritt = (heute.dayOfYear / heute.daysInYear) * 100;
console.log(`${fortschritt.toFixed(1)} % des Jahres ${heute.year} sind vergangen.`);
Jahreszins taggenau auf einen Zeitraum umrechnen
const zinsProTag = (betrag, jahresZins, datum) =>
(betrag * jahresZins) / datum.daysInYear;
const stichtag = Temporal.PlainDate.from("2024-03-01");
const tageszins = zinsProTag(10_000, 0.035, stichtag);
console.log(tageszins.toFixed(4));
Andere Kalender: hebräisches Jahr
const datum = Temporal.PlainDate.from("2024-03-15").withCalendar("hebrew");
console.log(datum.year);
console.log(datum.daysInYear);
console.log(datum.monthsInYear);
// Wichtig · Fallstricke
- Browser-Unterstützung: Temporal ist erst seit Kurzem verfügbar (Firefox 139+, Chrome 144+). Safari und ältere Node.js-Versionen unterstützen es noch nicht. Für den Einsatz im Produktivbetrieb gibt es Polyfills wie
@js-temporal/polyfillodertemporal-polyfill. - Kalenderabhängig: Rechnen Sie nicht fest mit
365/366. Bei Nicht-ISO-Kalendern kann der Wert stark abweichen, zum Beispiel 354 bis 385 Tage im hebräischen Kalender. - Die Eigenschaft ist schreibgeschützt. Eine Zuweisung wird im nicht-strikten Modus stillschweigend ignoriert und löst im Strict Mode einen
TypeErroraus. - Wenn die Eigenschaft über ein Objekt aufgerufen wird, das keine
Temporal.PlainDate-Instanz ist, z. B. perObject.getOwnPropertyDescriptor(...).get.call({}), entsteht einTypeError. - Das Gegenstück aus der alten API wäre eine selbst geschriebene Schaltjahr-Logik mit
Date.daysInYearist dafür die robustere Alternative.