这是我到目前为止的代码。当前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格式时它会改变。
有人可以就此提出任何建议吗?
答案 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"