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 monthCode-Zugriffseigenschaft von Temporal.PlainDate-Instanzen gibt einen kalenderabhängigen String zurück, der den Monat dieses Datums darstellt. Sie ist kalenderabhängig.

Normalerweise ist es M plus einer zweistelligen Monatszahl. Bei Schaltmonaten ist es der Code des vorherigen Monats, gefolgt von L (selbst wenn er konzeptionell ein Derivat des folgenden Monats ist; zum Beispiel hat im hebräischen Kalender Adar I den Code M05L, aber Adar II den Code M06). Wenn der Schaltmonat der erste Monat des Jahres ist, lautet der Code M00L.

Hinweis: Gehen Sie nicht davon aus, dass monthCode ein benutzerfreundlicher String ist; verwenden Sie toLocaleString(), um Ihr Datum zu formatieren. Allgemein sollten Sie die Namen der Monate nicht in einem Array oder Objekt zwischenspeichern. Auch wenn monthCode normalerweise einem Monatsnamen innerhalb eines Kalenders zugeordnet wird, empfehlen wir immer, den Monatsnamen zu berechnen, zum Beispiel mit date.toLocaleString("en-US", { calendar: date.calendarId, month: "long" }).

Der Set-Zugriff von monthCode ist undefined. Sie können diese Eigenschaft nicht direkt ändern. Verwenden Sie die with()-Methode, um ein neues Temporal.PlainDate-Objekt mit dem gewünschten neuen Wert zu erstellen.

Beispiele

Verwendung von monthCode

js
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

js
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 ab dem aktuellen Datum zu verschieben.

js
const date = Temporal.PlainDate.from("2021-07-01");
const newDate = date.add({ months: 3 });
console.log(newDate.toString()); // 2021-10-01

Standardmäßig schränkt with() den Tag auf den Bereich der gültigen Werte ein. Beide folgenden Befehle setzen den Monat auf den letzten Monat des Jahres:

js
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

Machen Sie dies nicht:

js
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:

js
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:

js
const date = Temporal.PlainDate.from("2021-07-01");
console.log(
  date.toLocaleString("en-US", { calendar: date.calendarId, month: "long" }),
); // July

Spezifikationen

Specification
Temporal
# sec-get-temporal.plaindate.prototype.monthcode

Browser-Kompatibilität

Siehe auch