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

无需升级Node.js,如何更新其时区数据?

不升级Node.js版本修复开罗时区夏令时问题

可以不升级Node.js版本,通过修补时区数据解决这个问题,以下是两种可行方案:

方案一:更新Alpine系统的tzdata包

Node.js在Alpine镜像中默认依赖系统的时区数据库(tzdata),只要将系统的tzdata更新到包含开罗最新夏令时规则的版本,就能让Node.js获取正确的时区计算结果。

在Dockerfile中添加以下步骤:

FROM node:16.20-alpine

# 升级tzdata到最新版本,获取最新时区规则
RUN apk add --no-cache --upgrade tzdata

# 可选:设置容器默认时区为开罗,不设置也不影响时区参数的计算
ENV TZ=Africa/Cairo

构建镜像后重新执行new Date().toLocaleString("en-US", {timeZone: "Africa/Cairo"}),就能得到正确的UTC+3时间。

方案二:替换Node.js内置ICU的时区数据

如果你的Node.js编译时使用了内置ICU(而非系统ICU),可以直接替换内置的时区数据文件:

  • 从ICU官方获取最新的时区数据文件(tzdata)
  • 在Docker镜像中找到Node.js的ICU数据目录(可通过node --icu-data-dir命令查看具体路径)
  • 将下载的最新tzdata文件替换到该目录中

不过这种方法操作相对复杂,优先推荐方案一,因为Alpine的tzdata包维护及时,更新操作简单且可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 20:07:50