For AI agents: the complete documentation index is available at /tc39-atlas/llms.txt, the full documentation bundle is available at /tc39-atlas/llms-full.txt, and this page is available as Markdown at /tc39-atlas/proposals/stage/4/proposal-intl-era-monthcode.md.
  • 简体中文
  • Intl Era and MonthCode Proposal S4

    中文标题:Intl 纪元和 MonthCode 提案

    提案概览
    提案速览

    该提案为 Temporal 集成中非 ISO 日历的 era、eraYear 和 monthCode 指定了详细行为,旨在填补 ECMA-402 规范中的空白。它定义了抽象操作、有效的 era 代码、月份代码以及针对 gregory、roc、buddhist、japanese 等日历的错误条件。

    Note

    以下 README 来自上游仓库,其中的阶段或状态标注可能滞后;当前信息以提案概览为准。

    Intl 纪元和 monthCode 提案

    (旧名称“Intl Temporal 提案”)

    为了在国际化设置中(针对“iso8601”以外的日历)指定关于 era、eraYear 和 monthCode 与 Temporal 一起使用的必要细节。

    阶段 - 阶段 4

    • 该提案在 2026 年 3 月 10 日的 TC39 会议上推进到 ECMA402 的阶段 4。(会议记录在 5 月被 TC39 批准后将添加链接)。

    • 该提案在 2026 年 1 月 20 日的 TC39 会议上推进到 ECMA402 的阶段 3。(会议记录在 3 月被 TC39 批准后将添加链接)。

    • 该提案在 2025 年 7 月 30 日的 TC39 会议上被推进到 ECMA402 的阶段 2.7

    • 该提案在 2023 年 2 月 1 日的 TC39 会议上被推进到 ECMA402 的阶段 2

    • 该提案在 2022 年 12 月 1 日的 TC39 会议上被推进到 ECMA402 的阶段 1

    阶段 3 审阅者

    在 2023 年 2 月 1 日的 TC39 会议上,以下成员同意担任本提案的阶段 3 审阅者:

    • EAO(Eemeli Aro),来自 Mozilla
    • SFC(Shane Carr),来自 Google

    演示文稿:

    参考资料:

    范围

    Temporal 提案 是一个 ECMA262 的阶段提案,旨在“提供用于处理日期和时间的标准对象和函数”。Temporal 提案的规范文本明确规定了“iso8601”日历和“UTC”时区的行为,以及定义了除“iso8601”和“UTC”之外的日历和时区的名称和某些基本方面。然而,为了实现目的,还需要额外要求。本提案旨在定义这些细节,这些细节最终应合并到 ECMA402 规范中。

    需要在 Temporal 提案中定义的抽象操作

    我们认为 Temporal 提案 中定义的以下抽象操作需要在本提案中更详细地定义:

    我们可能会选择为某些日历指定特定的日历算术,如果它们与“iso8601”日历之间的转换非常简单。例如,对于“gregory”、“roc”、“buddhist”、“japanese”日历,但将其他日历的算术留给含糊的语言描述。

    我们不打算为 Temporal 提案的以下部分指定日历算术:

    • 15.6.1.8 CalendarDateYear ( calendar, date )
    • 15.6.1.11 CalendarDateDay ( calendar, date )
    • 15.6.1.12 CalendarDateDayOfWeek ( calendar, date )
    • 15.6.1.13 CalendarDateDayOfYear ( calendar, date )
    • 15.6.1.14 CalendarDateWeekOfYear ( calendar, date )
    • 15.6.1.15 CalendarDateDaysInWeek ( calendar, date )
    • 15.6.1.16 CalendarDateDaysInMonth ( calendar, date )
    • 15.6.1.17 CalendarDateDaysInYear ( calendar, date )
    • 15.6.1.18 CalendarDateMonthsInYear ( calendar, date )
    • 15.6.1.19 CalendarDateInLeapYear ( calendar, date )

    日历

    日历的纪元值

    Temporal 提案 中的相关规范文本:

    对于日历:

    • 'calendar' 列表: CLDR 和 ICU 除 "iso8601" 外还支持以下日历,并且目前不同浏览器的 Intl.DateTimeFormat API 支持这些日历。

      • "gregory"
      • "roc"(除纪元纪年外,与 "gregory" 相同)
      • "buddhist"(除纪元纪年外,与 "gregory" 相同)
      • "japanese"(除纪元纪年外,与 "gregory" 相同)
      • "persian"
      • "coptic"
      • "ethiopic"
      • "ethiopic-ameta-alem" (除纪元纪年外,与 "ethiopic" 相同)
      • "indian"
      • "hebrew"
      • "chinese"
      • "dangi"(参考时区除外,与 "chinese" 相同)
      • "islamic"
      • "islamic-tbla"
      • "islamic-umalqura"
      • "islamic-civil"
    • 对 era 和 eraYear 的要求:

      • 在日历中,eraeraYear 的组合需要能够唯一标识时间线上的特定年份。
      • era 需要是字符串(根据 Temporal 中的 15.6.1.1 CalendarEra)。
      • eraYear 需要是整数(根据 Temporal 中的 15.6.1.2 CalendarEraYear)。
      • 如果日历中只有一个纪元,我们不需要也不应该在该日历中使用 era/eraYear(例如 "hebrew"、"persian")。
      • 如果我们定义 era,我们也需要定义当字段缺失时的行为。(回退到使用 year,或回退到默认值以及默认值是什么)
    • 'gregory':待定

    日历的纪元年份值

    Temporal 提案 中的相关规范文本:

    对于日历:

    • 'gregory':待定

    日历的月份值

    Temporal 提案 中的相关规范文本: *

    对于日历:

    • 'gregory':待定

    日历的 MonthCode 值

    Temporal 提案 中的相关规范文本: *

    对于日历:

    • 'gregory':待定