Signatur
Beschreibung
Die Zugriffs-Eigenschaft daysInYear gibt an, wie viele Tage das Jahr hat, in dem das Datum einer Temporal.ZonedDateTime-Instanz liegt. Im ISO-8601-Kalender ("iso8601") ist das 365 in Gemeinjahren und 366 in Schaltjahren.
Der Wert hängt vom Kalender ab. Bei Lunisolarkalendern wie dem hebräischen oder chinesischen Kalender kann ein Jahr deutlich mehr oder weniger Tage haben (z. B. 353–385 Tage im hebräischen Kalender). Das Datum wird dabei immer in der Ortszeit der Zeitzone ausgewertet, also so, wie es eine Wanduhr an diesem Ort anzeigen würde.
Typische Anwendungsfälle sind Fortschrittsanzeigen über das Jahr („Wie viel Prozent des Jahres sind vorbei?“), Berechnungen von Zinstagen nach der Methode „actual/actual“, Schaltjahrprüfungen oder die Validierung von dayOfYear-Werten.
Es handelt sich um eine schreibgeschützte Eigenschaft ohne Setter. Temporal-Objekte sind unveränderlich; um ein anderes Jahr zu betrachten, erzeugt man mit with() oder add() eine neue Instanz.
Rückgabewert
365 oder 366).Beispiele
Gemeinjahr und Schaltjahr im ISO-Kalender
const a = Temporal.ZonedDateTime.from('2023-06-15T12:00[Europe/Berlin]');
const b = Temporal.ZonedDateTime.from('2024-06-15T12:00[Europe/Berlin]');
console.log(a.daysInYear);
console.log(b.daysInYear);
console.log(b.inLeapYear);
Jahresfortschritt in Prozent berechnen
const jetzt = Temporal.ZonedDateTime.from('2024-07-01T08:30[Europe/Berlin]');
const fortschritt = ((jetzt.dayOfYear - 1) / jetzt.daysInYear) * 100;
console.log(`${fortschritt.toFixed(1)} % des Jahres ${jetzt.year} sind vorbei`);
Abhängigkeit vom Kalender (hebräisch)
const zdt = Temporal.ZonedDateTime.from('2024-03-01T10:00[Asia/Jerusalem]');
console.log(zdt.daysInYear);
// Dasselbe Datum im hebräischen Kalender (Jahr 5784 ist ein Schaltjahr mit 13 Monaten)
const hebr = zdt.withCalendar('hebrew');
console.log(hebr.year, hebr.monthsInYear, hebr.daysInYear);
Tage bis zum Jahresende ermitteln
const heute = Temporal.ZonedDateTime.from('2025-11-20T18:00[America/New_York]');
const resttage = heute.daysInYear - heute.dayOfYear;
console.log(`Noch ${resttage} Tage bis Silvester`);
// Wichtig · Fallstricke
- Kompatibilität: Temporal ist erst seit Kurzem in Browsern verfügbar (Firefox 139+, Chrome/Edge 144+). Safari und ältere Node.js-Versionen brauchen einen Polyfill wie
@js-temporal/polyfillodertemporal-polyfill. - Kalenderabhängig: Geh nicht von
365/366aus, wenn die Instanz einen anderen Kalender alsiso8601nutzt. Für Berechnungen besser immerdaysInYearauslesen, statt Werte fest einzutragen. - Ortszeit zählt: Derselbe Zeitpunkt (
Instant) kann rund um Silvester in verschiedenen Zeitzonen in unterschiedlichen Jahren liegen und damit ein anderesdaysInYearergeben. - Die Eigenschaft ist schreibgeschützt. Eine Zuweisung wird im Nicht-Strict-Modus stillschweigend ignoriert und löst im Strict-Modus einen
TypeErroraus. - Sommer- und Winterzeitumstellungen haben keinen Einfluss auf den Wert. Gezählt werden Kalendertage, nicht 24-Stunden-Blöcke (dafür gibt es
hoursInDay).