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

Node.js时区偏移异常求助:已取消夏令时但偏移值不符

Node.js时区偏移错误(已取消夏令时地区)的解决办法

问题根源

Node.js 内置的ICU(International Components for Unicode)库包含时区规则数据库,若你的地区近期取消了夏令时,旧版本Node.js(如16.16.0)的时区数据未同步更新,导致计算出错误的时区偏移值。而浏览器依赖系统自带的时区数据,所以能正常显示。

解决办法

1. 升级Node.js版本

优先升级到Node.js 16.x的最新维护版本(16.20.0及以上),或直接切换到更高的LTS版本(如18.x、20.x)。这些版本的ICU数据库已更新了最新的时区规则,能直接解决问题。

  • 若使用nvm管理版本,执行以下命令:
    # 升级到16.x最新LTS
    nvm install 16 --lts
    # 或切换到18.x LTS
    nvm install 18 --lts
    
  • 也可直接从Node.js官网下载对应版本安装包。

2. 临时修复:使用系统ICU数据

若暂时无法升级,可在启动Node.js时添加--use-system-icu参数,让Node.js调用系统自带的时区数据库(和浏览器一致):

node --use-system-icu your-script.js

执行后,getTimezoneOffset()会返回正确的-210,toLocaleString()也会输出正确时间。

3. 验证修复效果

运行以下代码确认结果:

const d = new Date()
console.log(d.getTimezoneOffset()) // 预期输出: -210
console.log(d.toLocaleString()) // 预期输出: '6/18/2023, 11:21:26 AM'

注意事项

Node.js 16.x已于2023年9月结束主动维护,不再接收功能更新和安全补丁,建议尽快迁移到受支持的LTS版本,避免后续出现类似兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 13:42:20