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

Temporal.PlainDateTime.prototype.dayOfYear

Eigenschaft

Gibt den Tag im Jahr als positive ganze Zahl zurück, beginnend bei 1 (1. Januar = <code>1</code>, 31. Dezember = <code>365</code> bzw. <code>366</code>).

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

Signatur

get Temporal.PlainDateTime.prototype.dayOfYear

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

Typ
number
Beschreibung
Positive ganze Zahl von 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);
61 1 365

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} %)`);
z. B. Tag 120 von 365 (32.9 %)

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));
2025-036

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);
2024-09-12T00:00:00 256

// Wichtig · Fallstricke

  • Nur lesbar: dt.dayOfYear = 10 hat keine Wirkung (im Strict Mode TypeError). Für Änderungen add() oder with() 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 dayOfYear gegenüberstellen, sondern month/day bzw. 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 weekOfYear und yearOfWeek verwenden.
  • 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/polyfill oder temporal-polyfill einbinden.