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

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 vom 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 beschränkt with() den Tag auf den Bereich gültiger Werte. Beide der folgenden werden den Monat auf den letzten Monat des Jahres setzen:

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

Tun 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 proposal
# sec-get-temporal.plaindate.prototype.monthcode

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch