You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何全局修改Node.js默认时区(CentOS无GUI环境)

全局修改CentOS上Node.js默认时区的解决方案

我来帮你搞定这个全局设置Node.js时区的问题——毕竟不想给每个应用单独配置确实麻烦,而且你的服务器是纯文本模式,刚好有几个靠谱的系统级方案,能让所有Node.js进程默认使用伊朗时区(Asia/Tehran):

1. 先确认系统时区配置是否正确

首先确保你的系统时区确实已经设置为伊朗时区,执行以下命令验证:

timedatectl

输出里应该能看到类似Time zone: Asia/Tehran (+0430, IRDT)的内容,如果没看到,先确保系统时区设置正确(不过你说已经改了,这一步只是确认)。

2. 核心步骤:全局设置TZ环境变量

Node.js的Date对象会优先读取系统的TZ环境变量,只要全局配置这个变量,所有Node.js进程都会自动继承。根据你的需求,有两种常用的全局配置方式:

方式一:给所有登录用户配置(永久生效

编辑系统级的profile文件,让所有用户登录后都加载这个环境变量:

vi /etc/profile

在文件末尾添加一行:

export TZ='Asia/Tehran'

保存退出后,执行以下命令让当前会话立即生效:

source /etc/profile

之后新登录的所有用户,运行Node.js都会自动使用伊朗时区。

方式二:给系统服务配置(如果Node.js以systemd服务运行)

如果你的Node.js应用是作为systemd服务运行的,需要修改对应的服务单元文件,添加环境变量:

  1. 找到你的Node服务文件,通常在/etc/systemd/system/目录下,比如my-node-app.service
  2. 编辑该文件:
vi /etc/systemd/system/my-node-app.service

[Service]段落下添加一行:

Environment="TZ=Asia/Tehran"
  1. 重新加载systemd配置并重启服务:
systemctl daemon-reload
systemctl restart my-node-app.service

这样该服务运行的Node.js进程就会默认使用伊朗时区。

方式三:系统级全局环境变量(所有进程生效)

编辑/etc/environment文件,添加时区变量:

vi /etc/environment

添加一行:

TZ=Asia/Tehran

保存退出后,需要重启服务器或者重新登录所有会话,这个变量会被所有系统进程继承,包括Node.js。

3. 验证配置是否生效

打开Node.js交互模式测试:

node

输入new Date()并回车,返回的时间应该和系统当前的伊朗时区时间一致(比如系统显示晚7点,Node返回的时间也应该是晚7点对应的日期时间)。


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

火山引擎 最新活动