Heroku - NodeJS 无法将日期转换为 UTC
Heroku - NodeJS Cant convert date to UTC
我需要在本地时间创建一个日期并将其转换为 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 的文字日期。
为什么会这样?我想不通。 :(
NodeJS v5.1.0
由于您的应用程序可能 运行 位于世界任何地方,因此 Heroku 应用程序的默认时区是 UTC(因此它在可能处于不同时区的 dynos 之间是一致的)。您可以 运行 以下命令 set a time zone:
heroku config:add TZ="America/Los_Angeles"
我查看了 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);
我需要在本地时间创建一个日期并将其转换为 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 的文字日期。
为什么会这样?我想不通。 :(
NodeJS v5.1.0
由于您的应用程序可能 运行 位于世界任何地方,因此 Heroku 应用程序的默认时区是 UTC(因此它在可能处于不同时区的 dynos 之间是一致的)。您可以 运行 以下命令 set a time zone:
heroku config:add TZ="America/Los_Angeles"
我查看了 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);