Signatur
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
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}`);
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
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`);
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);
// Wichtig · Fallstricke
- Nur lesbar:
zdt.day = 5ändert nichts. In Modulen und im Strict Mode löst die Zuweisung einenTypeErroraus, sonst wird sie ohne Meldung ignoriert. Verwenden Sie stattdessenzdt.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 einRangeErrorausgelöst. - Zeitzone beachten:
daybezieht sich immer auf die Ortszeit der Instanz, nicht auf UTC. Wenn Sie Tage vergleichen, verwenden Sie für beide Werte dieselbe Zeitzone, notfalls mitwithTimeZone()umrechnen. - Nicht mit
Date.prototype.getDay()verwechseln:getDay()liefert den Wochentag. Das Gegenstück dazu heißt in TemporaldayOfWeekund 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 mitadd({ 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/polyfillodertemporal-polyfill.