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

Temporal.ZonedDateTime.prototype.daysInYear

Eigenschaft

Gibt die Anzahl der Tage im Jahr eines <code>Temporal.ZonedDateTime</code> 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.ZonedDateTime.prototype.daysInYear

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

Typ
number
Beschreibung
Positive ganze Zahl mit der Anzahl der Tage im aktuellen Jahr nach dem Kalender der Instanz (im ISO-Kalender 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);
365 366 true

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`);
49.6 % des Jahres 2024 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);
366 5784 13 383

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`);
Noch 41 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/polyfill oder temporal-polyfill.
  • Kalenderabhängig: Geh nicht von 365/366 aus, wenn die Instanz einen anderen Kalender als iso8601 nutzt. Für Berechnungen besser immer daysInYear auslesen, statt Werte fest einzutragen.
  • Ortszeit zählt: Derselbe Zeitpunkt (Instant) kann rund um Silvester in verschiedenen Zeitzonen in unterschiedlichen Jahren liegen und damit ein anderes daysInYear ergeben.
  • Die Eigenschaft ist schreibgeschützt. Eine Zuweisung wird im Nicht-Strict-Modus stillschweigend ignoriert und löst im Strict-Modus einen TypeError aus.
  • Sommer- und Winterzeitumstellungen haben keinen Einfluss auf den Wert. Gezählt werden Kalendertage, nicht 24-Stunden-Blöcke (dafür gibt es hoursInDay).