Signatur
Beschreibung
Die Accessor-Eigenschaft day gibt den Tag innerhalb des Monats eines Temporal.PlainDate zurück. Die Zählung beginnt bei 1 und endet bei daysInMonth. Anders als bei Date.prototype.getDate() gibt es hier keine Zeitzone, die das Ergebnis verfälschen könnte, denn ein PlainDate ist ein reines Kalenderdatum ohne Uhrzeit.
Der Wert hängt vom Kalendersystem des Datums ab. Im ISO-8601-Kalender (iso8601) und im gregorianischen Kalender entspricht er dem bekannten Tag im Monat. In anderen Kalendern (z. B. hebrew, islamic-umalqura, chinese) liefert day den Tag im Monat dieses Kalenders.
Die Eigenschaft kann nur gelesen werden; ihr Setter ist undefined. Temporal-Objekte sind unveränderlich. Brauchst du ein Datum mit einem anderen Tag, erzeugst du mit with({ day }) eine neue Instanz. Für Berechnungen wie „drei Tage später“ solltest du add() nehmen und day nicht von Hand ändern.
Rückgabewert
1 bis daysInMonth: der Tag im Monat im Kalender des Datums.Beispiele
Tag aus einem ISO-Datum lesen
const datum = Temporal.PlainDate.from("2024-03-15");
console.log(datum.day);
console.log(datum.month, datum.year);
Monatsersten und Monatsletzten bestimmen
const heute = Temporal.PlainDate.from("2024-02-10");
const erster = heute.with({ day: 1 });
const letzter = heute.with({ day: heute.daysInMonth });
console.log(erster.toString(), letzter.toString());
console.log(`Noch ${heute.daysInMonth - heute.day} Tage im Monat`);
Tag in einem anderen Kalender
const iso = Temporal.PlainDate.from("2024-03-15");
const hebr = iso.withCalendar("hebrew");
console.log(iso.day); // ISO-Tag
console.log(hebr.day); // Tag im hebräischen Monat
console.log(hebr.monthCode);
Fälligkeit am 15. eines Monats prüfen
const istZahltag = (datum) => datum.day === 15;
const termine = ["2024-05-14", "2024-05-15", "2024-06-15"]
.map((s) => Temporal.PlainDate.from(s))
.filter(istZahltag)
.map(String);
console.log(termine);
// Wichtig · Fallstricke
- Nur lesbar:
datum.day = 5ändert nichts; im Strict Mode wird einTypeErrorgeworfen. Nimm stattdessendatum.with({ day: 5 }). - Überlauf bei
with(): Standardmäßig giltoverflow: \"constrain\", deshalb wirdwith({ day: 31 })im Februar auf den letzten Tag des Monats begrenzt. Mit{ overflow: \"reject\" }wird stattdessen einRangeErrorgeworfen. - Kalenderabhängig: In Nicht-ISO-Kalendern weicht
dayvom ISO-Tag ab. In manchen Kalendern können Tage im Monat übersprungen werden, deshalb istdaydort nicht unbedingt fortlaufend. Für den ISO-Wert rufst du vorherwithCalendar(\"iso8601\")auf. - Nicht verwechseln: Den Wochentag liefert
dayOfWeek, den Tag im JahrdayOfYear. - Kompatibilität: Temporal wird bisher nur von einem Teil der Browser nativ unterstützt (etwa Firefox 139+ und Chromium ab Version 144). Für breite Unterstützung brauchst du einen Polyfill wie
@js-temporal/polyfillodertemporal-polyfill. Die Versionsangaben solltest du vor dem Einsatz mit einer aktuellen Kompatibilitätstabelle prüfen.