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


当前回答

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

npm install tzdata -y

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

在你的项目中测试:

new Date()

希望能帮到你

其他回答

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

npm install tzdata -y

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

在你的项目中测试:

new Date()

希望能帮到你

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

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

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

你可以通过将环境变量TZ设置为UTC来强制Node.js进程时区

因此,所有时间都将以UTC+00:00计算

完整名单:https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

示例package.json:

{
  "scripts": {
    "start": "TZ='UTC' node index.js"
  }
}

对于那些将Node.js应用程序部署到Amazon AWS Elastic Beanstalk的人,这里有一个答案。我还没有在其他地方看到过这样的记录:

在Configuration -> Software -> Environment Properties下,简单地设置键值对TZ和您的时区,例如America/Los Angeles,然后应用更改。

你可以通过在Node应用程序中输出new Date(). tostring()来验证效果,并注意时区后缀。

根据这个谷歌组线程,可以在调用任何日期函数之前设置TZ环境变量。刚刚测试了一下,它可以工作。

> process.env.TZ = 'Europe/Amsterdam' 
'Europe/Amsterdam'
> d = new Date()
Sat, 24 Mar 2012 05:50:39 GMT
> d.toLocaleTimeString()
'06:50:39'
> ""+d
'Sat Mar 24 2012 06:50:39 GMT+0100 (CET)'

但是以后不能更改时区,因为那时Node已经读取了环境变量。