Signatur
Beschreibung
Die Zugriffseigenschaft day gibt den Tag im Monat eines Temporal.PlainDateTime-Objekts zurück. Der Wert ist eine positive Ganzzahl und beginnt bei 1. Er entspricht der Tagnummer, die man in einem Kalenderblatt sieht. Die Uhrzeit-Bestandteile (Stunde, Minute usw.) spielen dabei keine Rolle.
Welcher Wert herauskommt, hängt vom Kalender des Objekts ab (calendarId). Im ISO-8601- bzw. gregorianischen Kalender liegt day zwischen 1 und daysInMonth, also höchstens bei 28 bis 31. In anderen Kalendern kann es Lücken geben: Wenn ein Kalender Tage überspringt, folgt auf einen Tag nicht immer day + 1. Der Wert ist aber immer eine positive Ganzzahl.
day ist schreibgeschützt, denn Temporal-Objekte sind unveränderlich. Um den Tag zu ändern, erzeugt man mit with({ day }) ein neues Objekt. Für Datumsrechnungen nimmt man add() bzw. subtract().
Rückgabewert
1 und daysInMonth.Beispiele
Tag aus einem Datum mit Uhrzeit auslesen
const termin = Temporal.PlainDateTime.from("2025-03-14T09:30:00");
console.log(termin.day);
console.log(termin.hour); // Uhrzeit ändert day nicht
Tag setzen mit with() – Überlauf wird begrenzt
const dt = Temporal.PlainDateTime.from("2024-01-31T12:00");
// Standard overflow: "constrain" begrenzt auf den letzten gültigen Tag
const feb = dt.with({ month: 2 });
console.log(feb.day, feb.toString());
// Mit overflow: "reject" wird ein RangeError geworfen
try {
dt.with({ month: 2 }, { overflow: "reject" });
} catch (e) {
console.log(e.name);
}
Monatsletzten erkennen (z. B. für Abrechnungen)
const istMonatsletzter = (dt) => dt.day === dt.daysInMonth;
const a = Temporal.PlainDateTime.from("2025-04-30T23:59");
const b = Temporal.PlainDateTime.from("2025-04-29T08:00");
console.log(istMonatsletzter(a), istMonatsletzter(b));
// Ersten Tag des Monats bestimmen
console.log(b.with({ day: 1 }).toString());
Tag in einem anderen Kalender
const dt = Temporal.PlainDateTime.from("2025-03-14T10:00").withCalendar("hebrew");
console.log(dt.day, dt.monthCode, dt.calendarId);
// Wichtig · Fallstricke
- Kompatibilität: Temporal ist noch recht neu. Firefox unterstützt es ab Version 139, Chromium ab Version 144; Safari bisher nur hinter einem Flag. Für ältere Umgebungen gibt es ein Polyfill wie
@js-temporal/polyfillodertemporal-polyfill. Die Verfügbarkeit prüft man mittypeof Temporal !== "undefined". - Schreibgeschützt: Eine Zuweisung wie
dt.day = 5ändert nichts; im Strict Mode wirft sie einenTypeError. Stattdessendt.with({ day: 5 })verwenden. - Nicht verwechseln:
dayist der Tag im Monat. Den Wochentag liefertdayOfWeek(1 = Montag bis 7 = Sonntag), den Tag im JahrdayOfYear. Anders als beiDate.prototype.getDate()gibt es hier keine Zeitzone, die das Ergebnis verschieben könnte. - Andere Kalender: Nicht davon ausgehen, dass
dayimmer bei 1 beginnt und lückenlos bisdaysInMonthhochzählt. Für Rechnungen besseradd({ days: n })verwenden, stattdayvon Hand zu erhöhen.