Temporal.PlainDate.prototype.eraYear

可用性有限

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

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

eraYear 访问器属性是 Temporal.PlainDate 实例的属性,它返回一个非负整数,表示此日期在其所属纪年中对应的年份,如果日历不使用纪年(例如 ISO 8601),则返回 undefined。年份索引通常从 1(更常见)或 0 开始,并且纪年中的年份可能随时间递减(例如,格里高利历的公元前)。eraeraYear 一起可以唯一地标识日历中的一年,就像 year 一样。它取决于 日历

year 不同,eraeraYear 可能会在日历年中间发生变化。例如,日本于 2019 年 5 月 1 日开始了令和时代,因此从 2019-01-01 到 2019-04-30 的日期具有 { era: "heisei", eraYear: 31 },而从 2019-05-01 开始的日期具有 { era: "reiwa", eraYear: 1 },但 year 始终是 2019(因为日本日历默认使用 ISO 8601 年作为年份)。

eraYear 的设置访问器为 undefined。您无法直接更改此属性。请使用 with() 方法来创建一个具有所需新值的 Temporal.PlainDate 新对象。

示例

使用 eraYear

js
const date = Temporal.PlainDate.from("2021-07-01"); // ISO 8601 calendar
console.log(date.eraYear); // undefined

const date2 = Temporal.PlainDate.from("2021-07-01[u-ca=gregory]");
console.log(date2.eraYear); // 2021

const date3 = Temporal.PlainDate.from("-002021-07-01[u-ca=gregory]");
console.log(date3.eraYear); // 2022; 0000 is used for the year 1 BC

const date4 = Temporal.PlainDate.from("2021-07-01[u-ca=japanese]");
console.log(date4.eraYear); // 3

更改 eraYear

您只能为支持 eraYear 的日历设置它。例如,ISO 8601 日历没有纪年。请注意,您必须同时提供 eraeraYear

js
const date = Temporal.PlainDate.from("2021-07-01[u-ca=gregory]");
const newDate = date.with({ era: "bc", eraYear: 100 });
console.log(newDate.toString()); // -000099-07-01[u-ca=gregory]

const date2 = Temporal.PlainDate.from("2021-07-01[u-ca=japanese]");
const newDate2 = date2.with({ era: "meiji", eraYear: 1 });
console.log(newDate2.toString()); // 1868-07-01[u-ca=japanese]

规范

规范
Temporal
# sec-get-temporal.plaindate.prototype.erayear

浏览器兼容性

另见