You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node环境中使用@js-joda/core时区操作报错的解决方法

问题:Node环境下@js-joda/core使用ZoneId报错

我在Node环境中使用@js-joda/core编写了以下代码片段:

LocalDateTime.parse(row.date + "T" + row.time)
    .atZone(ZoneId.of("America/Los_Angeles"))
    .toInstant()
    .toEpochMilli()

运行时抛出错误:

ERROR: unsupported ZoneId:America/Los_Angeles 

 {
  "stack": "Error\n    at getRules (/Users/kevin/project/node_modules/@js-joda/core/dist/js-joda.js:4395:15)\n    at ofId (/Users/kevin/project/node_modules/@js-joda/core/dist/js-joda.js:4406:39)\n    at of (/Users/kevin/project/node_modules/@js-joda/core/dist/js-joda.js:10262:27)\n    at <anonymous> (/Users/kevin/project/app/app/scripts/create-tags.ts:119:30)\n    at <anonymous> (/Users/kevin/project/app/app/scripts/create-tags.ts:79:25)\n    at map (native)\n    at <anonymous> (/Users/kevin/project/app/app/scripts/create-tags.ts:79:14)\n    at processTicksAndRejections (native)",
  "message": "unsupported ZoneId:America/Los_Angeles"
} 

这段代码在js-joda官网的浏览器控制台能正常运行,请问Node环境下需要做哪些配置才能正常工作?


解决方法
  • 安装时区数据依赖:@js-joda/core本身不包含完整的时区规则数据,需额外安装@js-joda/timezone包,执行命令:
    npm install @js-joda/timezone --save
    
  • 导入时区数据:在使用ZoneId的代码文件顶部,添加时区数据的导入语句:
    • ES模块环境:
      import '@js-joda/timezone/dist/js-joda-timezone';
      
    • CommonJS环境:
      require('@js-joda/timezone/dist/js-joda-timezone');
      
  • 重新运行代码:此时ZoneId.of("America/Los_Angeles")可正常识别时区规则,不会再抛出unsupported ZoneId错误。

内容的提问来源于stack exchange,提问作者Kevin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 12:41:10