# Intl Era/Month Code for Stage 4
---
## Premise
* `Temporal` supports a number of non ISO-8601 calendars
* The behaviour of these calendars has always been defined outside of ECMAScript (in practice, CLDR + ICU4C/ICU4X)
* `Temporal` adds calendar arithmetic capability
* Although we don't want to specify the arithmetic for every calendar, we do want guardrails around implementation—defined behaviour in order to avoid implementation divergence
---
## Additions to ECMA-402
* Descriptions of supported calendars, removing potential ambiguities.
* List of valid era codes and aliases, as standardized in CLDR.
* Valid ranges for era years for each calendar.
* Expanded range for selection of reference years.
* List of epoch years per calendar for `Temporal.PlainDate.prototype.year`.
---
## Additions to ECMA-402
* List of epoch years per calendar for `Temporal.PlainDate.prototype.year`
* Specifics on which calendars support eras and week numbers
---
## Additions to ECMA-402
* Constraining behaviour when adding years in lunisolar calendars
* Algorithm for determining the difference between two dates
* Special handling for CLDR Hijri calendar IDs with implementation-defined algorithm
---
## What's new
* Small editorial cleanups
* [#118](https://github.com/tc39/proposal-intl-era-monthcode/pull/118) -- fix to spec bug related to East Asian lunisolar calendars
* [#116](https://github.com/tc39/proposal-intl-era-monthcode/pull/116) -- indicate that `CalendarDaysInMonth` and `CalendarMonthsInYear` use `CalendarISOToDate` slots
* [#115](https://github.com/tc39/proposal-intl-era-monthcode/pull/115) -- Clarify the proper authority for the Persian calendar, give additional informational links for calendars not maintained by a single organization
* [#122](https://github.com/tc39/proposal-intl-era-monthcode/pull/122) -- Fix spec bug resulting in assertion violations when user provides a date with a month greater than the number of months for that year in that calendar
* All implementations already do the right thing
---
## All blocking issues closed
---
## Stage entrance criteria
* Two compatible implementations which pass Test262 acceptance tests
* Significant in-the-field experience with shipping implementations, such as that provided by two independent VMs
* A pull request has been sent to tc39/ecma402, with the integrated spec text
* The relevant editor group has signed off on the pull request
---
## Two implementations passing tests
* Both SpiderMonkey and V8 have ~100% test conformance as of March 2026
---
## Significant in-the-field experience with shipping implementations
* Both SpiderMonkey and V8 have been shipping Temporal, and the associated Intl Era Month Code features, for several months
---
## Stage 4 PR
* Intl Era/Month Code is incorporated into the [Stage 4 PR for Temporal](https://github.com/tc39/ecma402/pull/1044)
---
## Editor signoff
* TBA
---
## Stage 4?