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

Temporal.PlainDateTime.prototype.day

Eigenschaft

Liefert den 1-basierten Tag im Monat eines <code>Temporal.PlainDateTime</code> als positive Ganzzahl. Das ist die Tagnummer, wie sie im Kalender steht.

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

Signatur

get Temporal.PlainDateTime.prototype.day

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

Typ
number
Beschreibung
Positive Ganzzahl (1-basiert) für den Tag im Monat im Kalender des Objekts. Im ISO-Kalender liegt der Wert zwischen 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
14 9

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);
}
29 2024-02-29T12:00:00 RangeError

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());
true false 2025-04-01T08:00:00

Tag in einem anderen Kalender

const dt = Temporal.PlainDateTime.from("2025-03-14T10:00").withCalendar("hebrew");
console.log(dt.day, dt.monthCode, dt.calendarId);
14 M06 hebrew

// 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/polyfill oder temporal-polyfill. Die Verfügbarkeit prüft man mit typeof Temporal !== "undefined".
  • Schreibgeschützt: Eine Zuweisung wie dt.day = 5 ändert nichts; im Strict Mode wirft sie einen TypeError. Stattdessen dt.with({ day: 5 }) verwenden.
  • Nicht verwechseln: day ist der Tag im Monat. Den Wochentag liefert dayOfWeek (1 = Montag bis 7 = Sonntag), den Tag im Jahr dayOfYear. Anders als bei Date.prototype.getDate() gibt es hier keine Zeitzone, die das Ergebnis verschieben könnte.
  • Andere Kalender: Nicht davon ausgehen, dass day immer bei 1 beginnt und lückenlos bis daysInMonth hochzählt. Für Rechnungen besser add({ days: n }) verwenden, statt day von Hand zu erhöhen.