Temporal.PlainDate.prototype.eraYear
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
The eraYear
accessor property of Temporal.PlainDate
instances returns a non-negative integer representing the year of this date within the era, or undefined
if the calendar does not use eras (e.g. ISO 8601). The year index usually starts from 1 (more common) or 0, and years in an era can decrease with time (e.g. Gregorian BCE). era
and eraYear
together uniquely identify a year in a calendar, in the same way that year
does. It is calendar-dependent.
Unlike year
, era
and eraYear
may change in the middle of a calendar year. For example, Japan started the Reiwa era on May 1, 2019, so dates from 2019-01-01 to 2019-04-30 have { era: "heisei", eraYear: 31 }
, and dates from 2019-05-01 onwards have { era: "reiwa", eraYear: 1 }
, but the year
is always 2019 (because the Japanese calendar uses the ISO 8601 year as the default year).
The set accessor of eraYear
is undefined
. You cannot change this property directly. Use the with()
method to create a new Temporal.PlainDate
object with the desired new value.
Examples
Using eraYear
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
Changing eraYear
You can only set eraYear
for calendars that support them. For example, the ISO 8601 calendar does not have eras. Note that you must provide era
and eraYear
together.
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]
Specifications
Specification |
---|
Temporal proposal # sec-get-temporal.plaindate.prototype.erayear |
Browser compatibility
BCD tables only load in the browser