Temporal.PlainDate.prototype.monthCode
Базовая поддержка Ограниченная доступность
Эта функция не является базовой, потому что она не работает в некоторых из наиболее широко используемых браузеров.
Свойство-аксессор monthCode экземпляров Temporal.PlainDate возвращает строку, зависящую от календаря и представляющую месяц этой даты. Оно зависит от календаря.
Значение
Базовый формат monthCode — это M плюс двузначный номер месяца. Для високосных месяцев используется код предыдущего месяца, за которым следует L (даже если он концептуально является производным от следующего месяца; например, в еврейском календаре Адар I имеет код M05L, а Адар II — код M06).
Все календари имеют как минимум 12 месяцев с кодами от "M01" до "M12".
Все указанные календари имеют коды месяцев, полностью определенные спецификацией. Большинство не имеют правил для месяцев, отличных от iso8601. Календари coptic, ethioaa и ethiopic имеют дополнительный месяц M13. Календари chinese и dangi имеют 12 дополнительных возможных високосных месяцев с кодами от "M01L" до "M12L". Календарь hebrew имеет один високосный месяц, "M05L" (Адар I).
Примечание: Не предполагайте, что monthCode является удобной для пользователя строкой; вместо этого используйте toLocaleString() для форматирования даты. Как правило, не кэшируйте названия месяцев в массиве или объекте. Хотя monthCode обычно соответствует названию месяца в пределах одного календаря, мы рекомендуем всегда вычислять название месяца, используя, например, date.toLocaleString("en-US", { calendar: date.calendarId, month: "long" }).
Сет-аксессор monthCode — это undefined. Вы не можете изменить это свойство напрямую. Используйте метод with() для создания нового объекта Temporal.PlainDate с желаемым новым значением.
При установке даты на другой год monthCode остается тем же, но month может измениться, если целевой год имеет другую структуру високосных месяцев. Если текущий monthCode не существует в целевом году и метод не настроен на отклонение, то для календарей chinese и dangi вместо него используется предыдущий месяц (например, с "M03L" на "M03", что означает с 闰三月 на 三月). Для hebrew используется следующий месяц (с "M05L" на "M06", что означает с Адар I на Адар II).
Примеры
Использование 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
Изменение monthCode
const date = Temporal.PlainDate.from("2021-07-01");
const newDate = date.with({ month: 2 });
console.log(newDate.toString()); // 2021-02-01
Вы также можете использовать add() или subtract(), чтобы сдвинуть текущую дату на определенное количество месяцев.
const date = Temporal.PlainDate.from("2021-07-01");
const newDate = date.add({ months: 3 });
console.log(newDate.toString()); // 2021-10-01
По умолчанию with() ограничивает день диапазоном допустимых значений. Обе следующие операции установят месяц на последний месяц года:
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
Форматирование названий месяцев
Не делайте так:
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
Также не делайте так:
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
Вместо этого всегда делайте так, что более удобно для пользователя, менее подвержено ошибкам и легко обобщается для других календарей:
const date = Temporal.PlainDate.from("2021-07-01");
console.log(
date.toLocaleString("en-US", { calendar: date.calendarId, month: "long" }),
); // July
Спецификации
Совместимость с браузерами
| Десктопные | Мобильные | Серверные | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
monthCode |
144 |
144 |
139 |
128 |
предварительная версия |
144 |
139 |
95 |
Нет |
Нет |
144 |
Нет |
1.4.0 |
2.7 |
26.0.0 |
См. также
Temporal.PlainDateTemporal.PlainDate.prototype.with()Temporal.PlainDate.prototype.add()Temporal.PlainDate.prototype.subtract()Temporal.PlainDate.prototype.yearTemporal.PlainDate.prototype.monthTemporal.PlainDate.prototype.daysInMonthTemporal.PlainDate.prototype.monthsInYear
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/PlainDate/monthCode