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/unstaged/proposal-intl-energy-units.md.
  • 简体中文
  • Intl Energy Units ?

    中文标题:Intl 能源单位

    提案概览
    提案速览

    该提案旨在向 Intl.NumberFormat 添加 watt、kilowatt 和 kilowatt-hour 作为受认可的单单位,解决 ECMAScript 在能源和功率格式化方面缺乏原生支持的问题。它提出对 ECMA-402 进行纯新增的更改,利用现有的 CLDR 定义,并包括 API 示例和复合单位用例。

    Note

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

    提案:向 ECMA-402 添加功率与能源单位(W、kW、kWh)

    状态

    阶段:0(正在寻找 champion)

    Champion:待定

    作者:Johan Røed (@johanrd)

    动机

    电动汽车、工程机械和建筑系统在其 API 中报告能源消耗。越来越多的 Web 应用正在被开发,以支持交通、工业和建筑环境的电气化。

    如果 ECMAScript 能够在 Intl.NumberFormat 中提供 wattkilowattkilowatt-hour 作为受支持的单位,将有助于简化这些应用的开发。

    目前,开发者必须手动格式化这些单位。

    相关问题https://github.com/tc39/ecma402/issues/739

    用例

    1. 能源消耗(kWh)

    电费账单与公用事业仪表盘
    智能家居监控、电表读数
    Fortum 应用显示总消耗 387 kWh
    电动汽车充电会话与电池状态
    充电应用、车队管理、行程规划
    Smartcar APIrFMS 车辆数据规范
    Circle K 应用显示充电会话期间交付 80 kWh
    太阳能发电与馈入
    每日/每月发电量、并网输出
    Tesla 应用显示今日发电 32.8 kWh

    2. 功率额定值(W、kW)

    电动汽车充电站
    充电网络、站点地图、会话详情
    Chargedrive 地图显示 150 kW 充电站
    太阳能与 HVAC 系统
    光伏板输出、逆变器仪表盘、供暖/制冷
    Tesla 应用显示太阳能板 kW 输出和每日 kWh 发电量
    实时设备功耗
    智能插座、电能表
    电器额定值、LED 照明、家庭电子设备
    Home Assistant 实时功率表显示 287.9 W

    3. 复合单位

    • 能效标签kilowatt-hour-per-year(欧盟能效标签)
    • 碳核算gram-per-kilowatt-hour(CO₂e g/kWh
    • 电动汽车效率kilowatt-hour-per-kilometerkilowatt-hour-per-mile(CLDR 也将 kilowatt-hour-per-100-kilometer 定义为单位标识符
    • 能量密度kilowatt-hour-per-liter(电池规格)
    • 能源强度kilowatt-hour-per-kilogram(工业生产)

    提议的解决方案

    ECMA-402 §6.6.2(IsSanctionedSingleUnitIdentifier),表 2 添加三个受认可的单单位标识符:

    单单位标识符
    watt 功率的 SI 导出单位(电器额定值、设备规格)
    kilowatt 常见功率额定值(电动汽车充电速率、太阳能、HVAC 系统)
    kilowatt-hour 电能消耗的主要单位(公用事业账单、电动汽车充电、家庭能源)

    这三个单位涵盖了绝大多数面向消费者的能源应用。ECMA-402 从 CLDR 中吸取内容;这些标识符已经定义并本地化。

    AvailableCanonicalUnits() 必须在其返回集中包含这三个新标识符。

    API 示例

    窄宽度,美式英语区域:
    new Intl.NumberFormat('en-US', { style: 'unit', unit: 'kilowatt-hour', unitDisplay: 'narrow' }).format(1234.5)
    // "1,234.5 kWh"
    短宽度,法语区域:
    new Intl.NumberFormat('fr-FR', { style: 'unit', unit: 'kilowatt-hour', unitDisplay: 'short' }).format(1234.5)
    // "1 234,5 kWh"
    长宽度,德语区域:
    new Intl.NumberFormat('de-DE', { style: 'unit', unit: 'watt', unitDisplay: 'long' }).format(1200)
    // "1.200 Watt"
    跨区域的功率额定值:
    new Intl.NumberFormat('en-US', { style: 'unit', unit: 'kilowatt' }).format(5.2)  // "5.2 kW"
    new Intl.NumberFormat('fr-FR', { style: 'unit', unit: 'kilowatt' }).format(5.2)  // "5,2 kW"
    复合单位(一旦基本单位受认可):
    new Intl.NumberFormat('en-US', { style: 'unit', unit: 'kilowatt-hour-per-mile', unitDisplay: 'narrow' }).format(0.29)
    // "0.29 kWh/mi"
    今天(本提案之前),这些会抛出 RangeError:
    new Intl.NumberFormat('en-US', { style: 'unit', unit: 'kilowatt-hour' }).format(42.5)
    // RangeError: Invalid unit argument for option unit: kilowatt-hour

    技术考虑

    • CLDR 支持:所有提议的单位已经在 Unicode CLDR 中定义,并在所有支持的区域中具有完整的本地化(unit.xml
    • 无破坏性变更:纯新增
    • 最小有效载荷影响:数据已存在于 CLDR 中,三个单位代表最小增量。
    • 与现有模式一致:遵循与 kilogram/kilometerfluid-ounce 相同的约定
    • 用户空间的变通方法和错误:没有原生支持,开发者使用像 convert-units(每周约 15 万 npm 下载)这样的库,或构建自定义格式化逻辑,导致区域错误(de-CH kWh bug损坏的分隔符
    • 规范更新:§6.6.2 IsSanctionedSingleUnitIdentifier(表 2)和 AvailableCanonicalUnits() 返回集

    呼吁

    能源单位比现有的受认可单位如 stone(英国/爱尔兰体重)、acre(土地面积)或 fluid-ounce(区域体积测量)具有显著更广泛的实用性,具有通用的 SI 标准化和快速增长的面向 Web 的应用:

    • 电动汽车:预计到 2030 年将达到 4000 万辆年销量[2](充电网络:ChargePoint 每月超过 100 万次会话[3]、EVgo 超过 140 万司机[4]
    • 建筑能源管理:由欧盟 EPBD 指令授权[1]
    • 智能家居市场:2024 年 1010 亿美元[5],预计到 2032 年达到 2260 亿美元(Home Assistant:超过 200 万安装[6]
    • 能源公用事业门户:美国主要公用事业公司(PG&E:1600 万人[7]、SCE:1500 万人[8])提供基于 kWh 的 Web 仪表盘

    社区支持

    Issue #739 已收到 15 个 👍 反应。还有一个 Discourse 上的线程。

    CLDR

    TC39-TG2 已建议将能源单位偏好数据添加到 CLDR 作为推进此提案的下一步。一旦此数据存在于 CLDR 中,Stage 1 Smart Unit Preferences 提案将为 ECMAScript 带来区域感知的自动单位选择——包括通过 CLDR 的 geq 阈值进行基于量级的缩放。

    单位标识符可用性

    单位标识符在 CLDR 中?注释
    kilowatt-hour用于 energy/default 偏好
    kilowatt用于 power/engine 偏好
    kilowatt-hour-per-100-kilometer定义为 force-kilowatt-hour-per-100-kilometer
    watt-hour如果添加,将启用完整的前缀缩放。参见 CLDR-11454
    milliampere-hour目前未定义

    未来考虑

    如果 watt-hour 被添加到 CLDR,它还将启用电池容量格式化(笔记本电脑和便携式设备的 Wh)。参见 为什么是 watt-hour?

    如果出现需求,未来提案中可以考虑附加单位:

    在 CLDR 中定义:
    • megawatt - 工业和发电设施
    • gigawatt - 大规模电力基础设施
    • milliwatt - 低功率电子设备
    目前在 CLDR 中没有:
    • watt-hour - 能源缩放的基本单位。参见 为什么是 watt-hour?
    • megawatt-hour - 公用事业规模的能源测量
    • gigawatt-hour - 公用事业规模的能源测量
    • milliampere-hour – 用于电子产品和电池的 mAh
    较低优先级:
    • joulekilojoule - 科学应用(独立领域)
    • british-thermal-unit - HVAC
    • horsepower - 汽车(小众 Web 使用)
    • caloriekilocaloriefoodcalorie - 营养学(独立领域)

    注意:能源价格比较(货币/kWh)是一个主要的面向消费者的用例,但 ECMA-402 目前不支持货币每单位的复合格式化。

    常见问题解答

    为什么是这三个单位?

    它们涵盖了 Web 开发中绝大多数面向消费者的能源应用。从聚焦开始可以实现更快的采用,并且所有三个单位已经在 CLDR 中定义了生产质量的格式化。

    为什么是 watt-hour?

    watt-hour 尚未在 CLDR 中作为显式单位定义,因此本提案从目前具有生产质量 CLDR 支持的三个单位开始。如果 watt-hour 被添加到 CLDR,它也可以被包含在 ECMA-402 中——并且有充分的理由考虑它:

    它是能源缩放的天然基本单位。 watt-hour 将启用完整的前缀链——Wh、kWh、MWh、GWh。现实世界的应用跨越整个范围:从设备消耗的 Wh(HA 线程)到电网规模报告的 GWh(Electricity Maps)。如果 Smart Unit Preferences 提案(Stage 1)落地,CLDR 中的 watt-hour 将使能源单位获得自动的基于量级的缩放——没有它,能源将成为少数没有适当缩放支持的常见测量领域之一。

    当前的复合构造产生次优的格式化。 CLDR 可以从组件(power-watt + duration-hour)构造 watt-hour,但结果不是生产质量的:

    单位CLDR 状态SHORT 格式(en)
    kilowatt-hour✅ 显式定义12.345 kWh
    watt-hour⚠️ 从组件构造12.345 W⋅hr

    构造的格式使用分隔符()和 hr,而不是自然的 Wh。其他区域也有类似问题(德语:W⋅Std. 而不是 Wh)。CLDR-17881 认识到常用的复合单位应该有显式定义以获得更好的格式化。

    这不会增加包体积吗?

    这些单位在 CLDR 中定义,并在所有支持的区域中本地化。浏览器可能需要为这三个单位提供额外的翻译字符串。然而,每单位的数据很小(单位名称、缩写和语法形式),三个单位代表最小的增加。

    参考