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

Temporal.PlainDateTime.prototype.daysInYear

Eigenschaft

Gibt die Anzahl der Tage im Jahr des <code>Temporal.PlainDateTime</code>-Werts als positive ganze Zahl zurück, abhängig vom verwendeten Kalender.

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

Signatur

get Temporal.PlainDateTime.prototype.daysInYear

Beschreibung

Die Zugriffseigenschaft daysInYear liefert, wie viele Tage das Jahr hat, in dem das Datum eines Temporal.PlainDateTime-Objekts liegt. Im ISO-8601-Kalender ("iso8601") ist das 365 für normale Jahre und 366 für Schaltjahre. Die Uhrzeit spielt dabei keine Rolle.

Das Ergebnis hängt vom Kalender der Instanz ab. In Mondkalendern oder lunisolaren Kalendern (z. B. "hebrew", "chinese" oder "islamic-civil") kann ein Jahr deutlich weniger oder mehr Tage haben, etwa 354 oder 383. Wer kalenderunabhängigen Code schreiben will, sollte deshalb nie fest mit 365 oder 366 rechnen, sondern immer daysInYear abfragen.

Typische Einsatzfälle sind Schaltjahrprüfungen, die Berechnung des Jahresfortschritts in Prozent (zusammen mit dayOfYear) und die anteilige Verteilung jährlicher Werte wie Zinsen oder Abonnementgebühren auf einzelne Tage.

Die Eigenschaft ist schreibgeschützt: Sie hat nur einen Getter und keinen Setter. Temporal-Objekte sind unveränderlich. Wenn du ein anderes Jahr brauchst, erzeugst du mit with() oder add() ein neues Objekt.

Rückgabewert

Typ
number
Beschreibung
Positive ganze Zahl mit der Anzahl der Tage im aktuellen Jahr, bezogen auf den Kalender der Instanz. Im ISO-Kalender ist das 365 oder 366.

Beispiele

Tage im Jahr: normales Jahr und Schaltjahr

const normal = Temporal.PlainDateTime.from("2023-06-15T10:30");
const schalt = Temporal.PlainDateTime.from("2024-06-15T10:30");

console.log(normal.daysInYear);
console.log(schalt.daysInYear);
console.log(schalt.inLeapYear);
365 366 true

Jahresfortschritt in Prozent berechnen

const jetzt = Temporal.PlainDateTime.from("2024-07-01T12:00");

// Anteil der vergangenen Tage, inklusive Tagesanteil der Uhrzeit
const tagesAnteil = (jetzt.hour * 60 + jetzt.minute) / 1440;
const fortschritt = ((jetzt.dayOfYear - 1 + tagesAnteil) / jetzt.daysInYear) * 100;

console.log(`${fortschritt.toFixed(2)} % des Jahres ${jetzt.year} sind vorbei`);
49.86 % des Jahres 2024 sind vorbei

Andere Kalender liefern andere Werte

const dt = Temporal.PlainDateTime.from("2024-03-01T08:00");

console.log(dt.daysInYear);                               // ISO
console.log(dt.withCalendar("hebrew").daysInYear);        // Hebräisches Jahr 5784 (Schaltjahr)
console.log(dt.withCalendar("islamic-civil").daysInYear); // Islamisches Mondjahr
366 383 354

Tageszins anteilig berechnen

const berechneTageszins = (betrag, jahreszins, zeitpunkt) =>
  (betrag * jahreszins) / zeitpunkt.daysInYear;

const stichtag = Temporal.PlainDateTime.from("2024-12-31T23:59");
console.log(berechneTageszins(10000, 0.035, stichtag).toFixed(4));
0.9563

// Wichtig · Fallstricke

  • Kompatibilität: Temporal ist noch recht neu. Es läuft in Firefox ab 139 und in Chromium-Browsern ab 144, Safari und ältere Node.js-Versionen unterstützen es noch nicht. Für den Produktiveinsatz den Polyfill @js-temporal/polyfill oder temporal-polyfill verwenden und die Verfügbarkeit mit typeof Temporal !== "undefined" prüfen.
  • Kalenderabhängigkeit: Nicht davon ausgehen, dass nur 365 oder 366 vorkommen. In nicht-gregorianischen Kalendern sind Werte wie 353–385 möglich.
  • Nur lesbar: Eine Zuweisung wie dt.daysInYear = 360 wird im nicht-strikten Modus stillschweigend ignoriert und löst im Strict Mode einen TypeError aus.
  • Die Uhrzeit hat keinen Einfluss auf das Ergebnis. Für eine reine Schaltjahrprüfung ist inLeapYear oft besser lesbar.
  • Für Zinsberechnungen verwenden Banken oft Konventionen wie „30/360“ oder „act/365“. daysInYear entspricht nur der „act/act“-Logik.