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


当前回答

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

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

app.yaml

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

其他回答

我使用这个NPM包unix-system-timezone

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

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

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

这个作品; https://stackoverflow.com/a/53282481/17700714

var date = new Date('2016-08-25T00:00:00')
var userTimezoneOffset = date.getTimezoneOffset() * 60000;
new Date(date.getTime() - userTimezoneOffset);

有时你可能在其他地方的虚拟服务器上运行代码——当运行NODEJS或其他风格时,这可能会变得混乱。

这里有一个修复程序,可以让你轻松地使用任何时区。

查看这里的时区列表

只需将时区短语放在FORMAT行的括号内。

在本例中,我将EPOCH转换为Eastern。

//RE: https://www.npmjs.com/package/date-and-time
const date = require('date-and-time');

let unixEpochTime = (seconds * 1000);
const dd=new Date(unixEpochTime);
let myFormattedDateTime = date.format(dd, 'YYYY/MM/DD HH:mm:ss A [America/New_York]Z');
let myFormattedDateTime24 = date.format(dd, 'YYYY/MM/DD HH:mm:ss [America/New_York]Z');