# 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?
{"type":"slide","slideOptions":{"theme":"igalia"}}