Heroku – NodeJS无法将date转换为UTC

我需要在我的本地时间创build一个date,并将其转换为UTC保存在数据库中。

我在我的本地环境和Heorku有下面的代码:

// node dateTest.js var moment = require('moment-timezone'); var timeZone = 'Pacific/Auckland'; var date = moment('20160101235959', 'YYYYMMDDHHmmss').tz(timeZone); var UTCdate = date.utc().toISOString(); console.log(UTCdate); 

当我在本地运行时,我得到:

2016-01-01T10:59:59.000Z

UTC时间是正确的。 但是当我在Heorku实例上运行时,我得到:

2016-01-01T23:59:59.000Z

最后是Z字面的date。

为什么会这样呢? 我无法弄清楚。 🙁

NodeJS v5.1.0

我查看了moment-timezone的文档,您可以使用两种不同的方式。 而不是utc()你可以使用第二种方法。 我会改变你的代码如下:

 var moment = require('moment-timezone'); var timeZone = 'Pacific/Auckland'; var date = moment.tz('20160101235959', 'YYYYMMDDHHmmss', timeZone); var UTCdate = date.tz('Greenwich').toISOString(); console.log(UTCdate); 

由于您的应用程序可以在世界任何地方运行,因此Heroku应用程序的默认时区是UTC(所以它可以在不同时区内的各个dynos保持一致)。 您可以运行以下命令来设置时区 :

 heroku config:add TZ="America/Los_Angeles"