如何在不更改日期/时间的情况下将UTC日期转换为ISOString格式?

时间:2016-07-06 13:32:38

标签: javascript

这是我到目前为止的代码。当前UTC时间= 1:22 pm

var now = new Date();
var now_utc = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds());
var isoDate1 = now_utc.toISOString();

now >>> Wed Jul 06 2016 21:22:20 GMT+0800
now_utc >>>  Wed Jul 06 2016 13:22:20 GMT+0800 (Malay Peninsula Standard Time)
isoDate1 >>> "2016-07-06T05:22:20.000Z"

我的问题是我的预期和需要,isoDate1看起来像这样:

2016-07-06T13:22:20.000Z

似乎now_utc是正确的但是当转换为iso格式时它会改变。

有人可以就此提出任何建议吗?

1 个答案:

答案 0 :(得分:1)

new Date(...)将始终构建它,并将日期/时间作为本地时间传递,toISOString为您提供ISO格式,同时也提供UTC的等效值您构建的当地时间,以及您所看到的行为 - 请注意now_utc的输出显示GMT+0800 - 这意味着它是当地时间,偏离GMT / UTC +8小时。

您应该只需将此时间作为ISO字符串获取当前UTC时间:

(new Date()).toISOString(); //"2016-07-06T13:39:50.432Z"