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


当前回答

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

npm install tzdata -y

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

在你的项目中测试:

new Date()

希望能帮到你

其他回答

设置服务器时区并使用NTP同步。 下面是更改服务器时间的一个更好的解决方案。

列出时区

timedatectl list-timezones

设置时区

sudo timedatectl set-timezone America/New_York

确认时区

timedatectl

我的服务器和数据库更喜欢使用UTC时区。任何转换都必须在客户端处理。 我们可以在客户端使用moment.js。

维护多个实例也很容易,

根据这个谷歌组线程,可以在调用任何日期函数之前设置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已经读取了环境变量。

从节点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)'

const nDate =新日期()。toLocaleString(“en - us”{ 时区:“亚洲/首尔” }); console.log (nDate);

这里是一个100%工作的例子,在NodeJs中获得自定义时区日期时间,而不使用任何外部模块:

const nDate =新日期()。toLocaleString(“en - us”{ 时区:“亚洲/加尔各答” }); console.log (nDate);