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

Temporal.ZonedDateTime.prototype.day

Eigenschaft

Gibt den Tag im Monat einer <code>Temporal.ZonedDateTime</code> als positive Ganzzahl zurück. Die Zählung beginnt bei 1 und bezieht sich auf die Ortszeit der Zeitzone und den Kalender.

seit JavaScript ES2026 (Temporal) – Firefox 139+, Chrome/Edge 144+ Kategorie: method-property

Signatur

get Temporal.ZonedDateTime.prototype.day

Beschreibung

Die Zugriffs-Eigenschaft day liefert den Tag im Monat einer Temporal.ZonedDateTime, gezählt ab 1. Sie hat nur einen Getter und keinen Setter. Den Tag ändern Sie mit with({ day }), das eine neue Instanz zurückgibt. Temporal-Objekte sind unveränderlich.

Ausschlaggebend ist die Ortszeit in der Zeitzone der Instanz. Derselbe Zeitpunkt (Temporal.Instant) kann deshalb in verschiedenen Zeitzonen auf verschiedene Kalendertage fallen. Das ist wichtig, wenn Sie Termine, Tagesberichte oder Fristen weltweit einheitlich auswerten.

Der Wert hängt außerdem vom Kalendersystem ab. Im Standardkalender iso8601 entspricht er dem gewohnten gregorianischen Tag (1–31). In anderen Kalendern wie chinese, hebrew oder islamic bezieht sich day auf den Monat dieses Kalenders. In seltenen Fällen ist die Zählung dort nicht lückenlos, zum Beispiel bei Kalenderreformen. Die Obergrenze für den jeweiligen Monat liefert daysInMonth.

Rückgabewert

Typ
number
Beschreibung
Positive Ganzzahl ab 1: der Tag im Monat nach Ortszeit und Kalender der Instanz. Im ISO-Kalender liegt der Wert zwischen 1 und daysInMonth, also höchstens 31.

Beispiele

Tag im Monat auslesen

const termin = Temporal.ZonedDateTime.from("2024-07-15T14:30:00[Europe/Berlin]");
console.log(termin.day);
console.log(`${termin.day}.${termin.month}.${termin.year}`);
15 15.7.2024

Derselbe Zeitpunkt, unterschiedliche Tage je Zeitzone

const instant = Temporal.Instant.from("2024-03-31T23:30:00Z");

const berlin = instant.toZonedDateTimeISO("Europe/Berlin");
const newYork = instant.toZonedDateTimeISO("America/New_York");

console.log(berlin.day, berlin.month);   // 01:30 Uhr am 1. April
console.log(newYork.day, newYork.month); // 19:30 Uhr am 31. März
1 4 31 3

Monatsanfang und -ende mit with() und daysInMonth

const jetzt = Temporal.ZonedDateTime.from("2024-02-10T09:00:00[Europe/Vienna]");

const ersterTag = jetzt.with({ day: 1 }).startOfDay();
const letzterTag = jetzt.with({ day: jetzt.daysInMonth });

console.log(ersterTag.toString());
console.log(letzterTag.day);
console.log(`Noch ${jetzt.daysInMonth - jetzt.day} Tage bis Monatsende`);
2024-02-01T00:00:00+01:00[Europe/Vienna] 29 Noch 19 Tage bis Monatsende

Tag in einem anderen Kalender

const zdt = Temporal.ZonedDateTime.from("2024-02-10T12:00:00[Asia/Shanghai]");

console.log(zdt.day); // ISO-Kalender
// Chinesisches Neujahr 2024: 1. Tag des 1. Monats
console.log(zdt.withCalendar("chinese").day);
10 1

// Wichtig · Fallstricke

  • Nur lesbar: zdt.day = 5 ändert nichts. In Modulen und im Strict Mode löst die Zuweisung einen TypeError aus, sonst wird sie ohne Meldung ignoriert. Verwenden Sie stattdessen zdt.with({ day: 5 }).
  • Überlauf bei with(): with({ day: 31 }) im Februar wird standardmäßig auf den letzten gültigen Tag begrenzt (overflow: \"constrain\"). Mit { overflow: \"reject\" } wird stattdessen ein RangeError ausgelöst.
  • Zeitzone beachten: day bezieht sich immer auf die Ortszeit der Instanz, nicht auf UTC. Wenn Sie Tage vergleichen, verwenden Sie für beide Werte dieselbe Zeitzone, notfalls mit withTimeZone() umrechnen.
  • Nicht mit Date.prototype.getDay() verwechseln: getDay() liefert den Wochentag. Das Gegenstück dazu heißt in Temporal dayOfWeek und liefert 1 = Montag bis 7 = Sonntag.
  • Kalender: In Kalendern außer ISO kann die Zählung Lücken haben. Rechnen Sie deshalb nicht mit day + 1, sondern mit add({ days: 1 }).
  • Kompatibilität: Temporal ist neu. Es wird ab Firefox 139 und Chrome/Edge 144 unterstützt, Safari unterstützt es noch nicht. Für ältere Umgebungen gibt es Polyfills wie @js-temporal/polyfill oder temporal-polyfill.