如何在node.js中设置默认时区?


当前回答

我知道这个帖子很旧了,但我认为这将帮助任何像我一样从谷歌登陆这里的人。

在GAE Flex (NodeJs)中,你可以在app.yaml文件中设置环境变量TZ(一个管理应用程序中所有日期时区的变量),我给你留了一个例子:

app.yaml

# [START env]
env_variables:
  # Timezone
  TZ: America/Argentina/Buenos_Aires

其他回答

你可以使用tzdata库来配置全局时区:

npm install tzdata -y

使用变量设置环境后,例如:TZ=America/Bogota

在你的项目中测试:

new Date()

希望能帮到你

不幸的是,设置process.env.TZ工作得不是很好——基本上不确定什么时候更改会生效)。

因此,在启动节点之前设置系统时区是唯一正确的选择。

但是,如果您不能这样做,应该可以使用节点时间作为一种变通方法:以本地时间或UTC时间获取时间,并将它们转换为所需的时区。参见如何在Nodejs中使用时区偏移?获取详细信息。

从节点13开始,您现在可以重复设置process.env.TZ,它将反映在新的Date对象的时区中。我不知道我是否会在生产代码中使用它,但它在单元测试中绝对有用。

> process.env.TZ = 'Europe/London';
'Europe/London'
> (new Date().toString())
'Fri Mar 20 2020 09:39:59 GMT+0000 (Greenwich Mean Time)'

> process.env.TZ = 'Europe/Amsterdam';
'Europe/Amsterdam'
> (new Date().toString())
'Fri Mar 20 2020 10:40:07 GMT+0100 (Central European Standard Time)'

另一种至少在Linux环境下对我有用的方法是像这样运行你的Node.js应用程序:

env TZ='Europe/Amsterdam' node server.js

这至少可以确保从一开始就正确地设置了时区。

只要在你的主文件中设置环境变量,比如index.js或app.js或main.js或任何你的文件名:

process.env.TZ = "Asia/Tehran";

这将设置将在整个节点应用程序中使用的时区