Signatur
Beschreibung
Die schreibgeschützte Zugriffs-Eigenschaft dayOfYear liefert für eine Temporal.PlainDateTime-Instanz den Index des Tages innerhalb des Jahres, gezählt ab 1. Der erste Tag des Jahres hat den Wert 1, der letzte Tag entspricht daysInYear – im ISO-Kalender also 365 oder in Schaltjahren 366.
Die Uhrzeit-Anteile (Stunde, Minute, Sekunde …) spielen keine Rolle: 2024-03-01T00:00 und 2024-03-01T23:59 ergeben denselben Wert. Maßgeblich ist allein das Kalenderdatum im Kalendersystem der Instanz (calendarId). In anderen Kalendern als iso8601 (z. B. hebrew oder islamic-umalqura) bezieht sich der Wert auf das Jahr dieses Kalenders.
Typische Einsatzfälle sind Fortschrittsanzeigen („Tag 120 von 366“), Ordinaldaten im Format JJJJ-TTT, tagesbasierte Rotationen (z. B. „Spruch des Tages“) oder Auswertungen, die Daten nach Tagesnummer gruppieren.
Da es sich um einen reinen Getter handelt, lässt sich der Wert nicht direkt zuweisen. Um ein Datum mit einem bestimmten Tagesindex zu erzeugen, rechnet man vom 1. Januar mit add({ days: n - 1 }).
Rückgabewert
1 bis daysInYear (ISO-Kalender: maximal 365 bzw. 366 in Schaltjahren).Beispiele
Tag im Jahr ermitteln
const dt = Temporal.PlainDateTime.from("2024-03-01T15:30");
console.log(dt.dayOfYear); // 2024 ist ein Schaltjahr
const neujahr = Temporal.PlainDateTime.from("2023-01-01T00:00");
const silvester = Temporal.PlainDateTime.from("2023-12-31T23:59");
console.log(neujahr.dayOfYear, silvester.dayOfYear);
Jahresfortschritt anzeigen
const jetzt = Temporal.Now.plainDateTimeISO();
const prozent = ((jetzt.dayOfYear / jetzt.daysInYear) * 100).toFixed(1);
console.log(`Tag ${jetzt.dayOfYear} von ${jetzt.daysInYear} (${prozent} %)`);
Ordinaldatum (JJJJ-TTT) formatieren
const toOrdinal = (dt) =>
`${dt.year}-${String(dt.dayOfYear).padStart(3, "0")}`;
const dt = Temporal.PlainDateTime.from("2025-02-05T08:00");
console.log(toOrdinal(dt));
Datum aus Tagesindex erzeugen
const ausTagesindex = (jahr, tag) =>
Temporal.PlainDateTime.from({ year: jahr, month: 1, day: 1 })
.add({ days: tag - 1 });
const dt = ausTagesindex(2024, 256); // Tag des Programmierers
console.log(dt.toString(), dt.dayOfYear);
// Wichtig · Fallstricke
- Nur lesbar:
dt.dayOfYear = 10hat keine Wirkung (im Strict ModeTypeError). Für Änderungenadd()oderwith()verwenden –with({ dayOfYear })wird nicht unterstützt. - Schaltjahre: Ab dem 1. März sind die Werte in Schaltjahren um 1 höher. Für Vergleiche über Jahre hinweg daher nicht blind
dayOfYeargegenüberstellen, sondernmonth/daybzw.Temporal.PlainDate.compare()nutzen. - Kalenderabhängig: Bei Nicht-ISO-Kalendern beginnt das Jahr nicht am 1. Januar; der Wert kann dann über 366 liegen (z. B. bis 385 im hebräischen Kalender).
- Nicht mit Kalenderwochen verwechseln: Für ISO-Wochen
weekOfYearundyearOfWeekverwenden. - Kompatibilität: Temporal ist neu und noch nicht in allen Browsern verfügbar (u. a. Safari fehlt, in Node.js noch nicht standardmäßig aktiv). Für den Produktiveinsatz ggf. ein Polyfill wie
@js-temporal/polyfillodertemporal-polyfilleinbinden.