Signatur
Beschreibung
Die Accessor-Eigenschaft dayOfYear von Temporal.PlainDate-Instanzen gibt an, der wievielte Tag des Jahres das Datum ist. Die Zählung beginnt bei 1. Im ISO-8601-Kalender liegt der Wert zwischen 1 und 365, in Schaltjahren zwischen 1 und 366.
Die Eigenschaft ist schreibgeschützt. Es gibt nur einen Getter und keinen Setter. Um ein Datum mit einem bestimmten Jahrestag zu erzeugen, nimmst du stattdessen den 1. Januar und rechnest mit add({ days: n - 1 }) weiter. Der Wert hängt vom Kalender des Datums ab. Bei nicht-gregorianischen Kalendern wie hebrew oder islamic-umalqura bezieht er sich auf das Jahr des jeweiligen Kalenders, das an einem ganz anderen Tag beginnen kann.
Typische Anwendungen sind fortlaufende Tagesnummern, Julianische Tagesangaben (etwa 2024-060 im ISO-Ordinalformat), Fortschrittsanzeigen für das Jahr, Tagesnummern in Logdateien oder Chargen-Codes in der Produktion. Zusammen mit daysInYear kannst du leicht berechnen, wie viel vom Jahr schon vergangen ist.
Rückgabewert
1 und daysInYear (365 oder 366).Beispiele
Jahrestag eines Datums auslesen
const datum = Temporal.PlainDate.from('2024-03-01');
console.log(datum.dayOfYear);
// 2024 ist ein Schaltjahr, 2023 nicht
console.log(Temporal.PlainDate.from('2023-03-01').dayOfYear);
console.log(Temporal.PlainDate.from('2024-12-31').dayOfYear);
Jahresfortschritt in Prozent berechnen
const heute = Temporal.Now.plainDateISO();
const fortschritt = (heute.dayOfYear / heute.daysInYear) * 100;
console.log(`Tag ${heute.dayOfYear} von ${heute.daysInYear} (${fortschritt.toFixed(1)} %)`);
ISO-Ordinaldatum (YYYY-DDD) erzeugen und zurückrechnen
const toOrdinal = (d) => `${d.year}-${String(d.dayOfYear).padStart(3, '0')}`;
const fromOrdinal = (str) => {
const [jahr, tag] = str.split('-').map(Number);
// Setter gibt es nicht – daher vom 1. Januar aus addieren
return Temporal.PlainDate.from({ year: jahr, month: 1, day: 1 }).add({ days: tag - 1 });
};
const d = Temporal.PlainDate.from('2025-02-14');
console.log(toOrdinal(d));
console.log(fromOrdinal('2025-045').toString());
Kalenderabhängigkeit
const iso = Temporal.PlainDate.from('2024-10-03');
const hebr = iso.withCalendar('hebrew');
console.log(iso.dayOfYear);
console.log(hebr.dayOfYear); // Hebräisches Neujahr (Rosch ha-Schana) war am 03.10.2024
// Wichtig · Fallstricke
- Schreibgeschützt:
datum.dayOfYear = 10hat keine Wirkung und wirft im Strict Mode einenTypeError.with({ dayOfYear })wird ebenfalls nicht unterstützt, weildayOfYearkein gültiges Feld fürwith()ist. - 1-basiert: Anders als bei
Date.prototype.getMonth()gibt es hier keinen 0-Index. Der 1. Januar ergibt1. - Schaltjahre: Ab dem 1. März verschiebt sich der Wert in Schaltjahren um 1. Wenn du Jahrestage verschiedener Jahre vergleichst, führt das leicht zu Fehlern um genau einen Tag. Prüfe das mit
inLeapYear. - Kalender: Der Wert bezieht sich immer auf den Kalender der Instanz. Für ISO-Werte vorher
withCalendar('iso8601')verwenden. - Kompatibilität: Temporal ist neu. Firefox unterstützt es ab Version 139, Chrome ab Version 144, Safari bisher nicht. In älteren Umgebungen brauchst du ein Polyfill wie
@js-temporal/polyfillodertemporal-polyfill. Die gleiche Eigenschaft gibt es auch beiPlainDateTimeundZonedDateTime.