Temporal.PlainMonthDay.prototype.monthCode

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

monthCode 访问器属性是 Temporal.PlainMonthDay 实例的一个属性,它返回一个特定于日历的字符串,表示此日期的月份。它依赖于 日历

通常它是 M 加上两位数的月份数字。对于闰月,它是前一个月份代码后跟 L(即使它在概念上是后一个月份的派生;例如,在希伯来日历中,Adar I 的代码是 M05L,但 Adar II 的代码是 M06)。如果闰月是该年的第一个月,则代码为 M00L

因为 month 是年内的索引,而 PlainMonthDay 没有年份,所以 PlainMonthDay 没有 month 属性。因此,monthCode 用于表示与年份无关的月份。

monthCode 的设置访问器是 undefined。您不能直接更改此属性。请使用 with() 方法创建一个具有所需新值的 Temporal.PlainMonthDay 新对象。

有关一般信息和更多示例,请参见 Temporal.PlainDate.prototype.monthCode

示例

使用 monthCode

js
const md = Temporal.PlainMonthDay.from("07-01"); // ISO 8601 calendar
console.log(md.monthCode); // "M07"

const md2 = Temporal.PlainMonthDay.from("2021-05-01[u-ca=chinese]");
console.log(md2.monthCode); // "M03"

const md3 = Temporal.PlainMonthDay.from("2023-04-01[u-ca=chinese]");
console.log(md3.monthCode); // "M02L"

更改 monthCode

js
const md = Temporal.PlainMonthDay.from("07-01");
const newMD = md.with({ monthCode: "M03" });
console.log(newMD.toString()); // 03-01

对于其他日历,只要存在一个有效的月份-日期年份,该月份-日期就被认为是有效的,其底层参考年份可能会发生变化。例如

js
const md = Temporal.PlainMonthDay.from({
  monthCode: "M02",
  day: 30,
  calendar: "hebrew",
});
console.log(md.toString()); // 1971-11-18[u-ca=hebrew]
console.log(md.toLocaleString("en-US", { calendar: "hebrew" })); // 30 Heshvan
// 30 Heshvan only exists in 1971, but this year is not a leap year
const newMD = md.with({ monthCode: "M05L" });
console.log(newMD.toString()); // 1970-03-08[u-ca=hebrew]
console.log(newMD.toLocaleString("en-US", { calendar: "hebrew" })); // 30 Adar I

规范

规范
Temporal
# sec-get-temporal.plainmonthday.prototype.monthcode

浏览器兼容性

另见