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

Temporal.PlainDate.prototype.daysInYear

Eigenschaft

Gibt die Anzahl der Tage im Jahr des Datums als positive ganze Zahl zurück. Im ISO-Kalender ist das <code>365</code> oder <code>366</code>, je nach Kalender auch andere Werte.

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

Signatur

get Temporal.PlainDate.prototype.daysInYear

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

Typ
number
Beschreibung
Positive ganze Zahl: die Anzahl der Tage im Jahr des Datums, abhängig vom Kalender (ISO: 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);
365 366 true

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.`);
z. B. "54.4 % des Jahres 2024 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));
0.9563

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

// 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/polyfill oder temporal-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 TypeError aus.
  • Wenn die Eigenschaft über ein Objekt aufgerufen wird, das keine Temporal.PlainDate-Instanz ist, z. B. per Object.getOwnPropertyDescriptor(...).get.call({}), entsteht ein TypeError.
  • Das Gegenstück aus der alten API wäre eine selbst geschriebene Schaltjahr-Logik mit Date. daysInYear ist dafür die robustere Alternative.