Temporal.PlainDate.prototype.monthCode
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Die Zugriffsobjekteigenschaft monthCode
von Temporal.PlainDate
-Instanzen gibt einen kalenderabhängigen Zeichenfolgenwert zurück, der den Monat dieses Datums darstellt. Sie ist kalender-abhängig.
Normalerweise ist es M
plus eine zweistellige Monatsnummer. Für Schaltmonate ist es der Code des vorherigen Monats, gefolgt von L
(auch wenn es konzeptionell ein Derivat des folgenden Monats ist; zum Beispiel hat im hebräischen Kalender Adar I den Code M05L
, aber Adar II hat den Code M06
). Wenn der Schaltmonat der erste Monat des Jahres ist, ist der Code M00L
.
Hinweis:
Gehen Sie nicht davon aus, dass monthCode
eine benutzerfreundliche Zeichenfolge ist; verwenden Sie toLocaleString()
, um Ihr Datum zu formatieren. Allgemein gesagt, speichern Sie den Namen von Monaten nicht in einem Array oder Objekt zwischen. Auch wenn monthCode
normalerweise dem Monatsnamen innerhalb eines Kalenders entspricht, empfehlen wir immer, den Monatsnamen zu berechnen, indem Sie zum Beispiel date.toLocaleString("en-US", { calendar: date.calendarId, month: "long" })
verwenden.
Der Schreibzugriff von monthCode
ist undefined
. Sie können diese Eigenschaft nicht direkt ändern. Verwenden Sie die Methode with()
, um ein neues Temporal.PlainDate
-Objekt mit dem gewünschten neuen Wert zu erstellen.
Beispiele
Verwendung von monthCode
const date = Temporal.PlainDate.from("2021-07-01"); // ISO 8601 calendar
console.log(date.monthCode); // "M07"
console.log(date.month); // 7
const date2 = Temporal.PlainDate.from("2021-05-01[u-ca=chinese]");
console.log(date2.monthCode); // "M03"
console.log(date2.month); // 3; it is March 20 in the Chinese calendar
const date3 = Temporal.PlainDate.from("2023-05-01[u-ca=chinese]");
console.log(date3.monthCode); // "M03"
console.log(date3.month); // 4, although it is also March (M03)!
const date4 = Temporal.PlainDate.from("2023-04-01[u-ca=chinese]");
console.log(date4.monthCode); // "M02L"
console.log(date4.month); // 3, this month is a leap month, i.e. a duplicate February
Änderung von monthCode
const date = Temporal.PlainDate.from("2021-07-01");
const newDate = date.with({ month: 2 });
console.log(newDate.toString()); // 2021-02-01
Sie können auch add()
oder subtract()
verwenden, um eine bestimmte Anzahl von Monaten vom aktuellen Datum zu verschieben.
const date = Temporal.PlainDate.from("2021-07-01");
const newDate = date.add({ months: 3 });
console.log(newDate.toString()); // 2021-10-01
Standardmäßig beschränkt with()
den Tag auf den Bereich gültiger Werte. Beide der folgenden werden den Monat auf den letzten Monat des Jahres setzen:
const date = Temporal.PlainDate.from("2021-07-01");
const lastMonth = date.with({ month: date.monthsInYear }); // 2021-12-01
const lastMonth2 = date.with({ month: Number.MAX_VALUE }); // 2021-12-01
Formatierung von Monatsnamen
Tun Sie dies nicht:
const names = [
"January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"
];
const date = Temporal.PlainDate.from("2021-07-01");
console.log(names[date.month - 1]); // July
Machen Sie auch dies nicht:
const names = {
"M01": "January", "M02": "February", "M03": "March", "M04": "April",
"M05": "May", "M06": "June", "M07": "July", "M08": "August",
"M09": "September", "M10": "October", "M11": "November", "M12": "December"
};
const date = Temporal.PlainDate.from("2021-07-01");
console.log(names[date.monthCode]); // July
Stattdessen tun Sie immer dies, was benutzerfreundlicher und weniger fehleranfällig ist und sich leicht auf andere Kalender verallgemeinern lässt:
const date = Temporal.PlainDate.from("2021-07-01");
console.log(
date.toLocaleString("en-US", { calendar: date.calendarId, month: "long" }),
); // July
Spezifikationen
Specification |
---|
Temporal proposal # sec-get-temporal.plaindate.prototype.monthcode |
Browser-Kompatibilität
BCD tables only load in the browser