夏令时 javascript 格式化日期

Daylight javascript formatting date

我有这个问题。 我有这个格式的日期

var datestring = "2017-10-30T15:03:10.933044Z";

如果我这样写我的代码

var d = new Date(datestring);

我得到了

Mon Oct 30 2017 16:03:10 GMT+0100 (ora solare Europa occidentale)

因为现在意大利的白天只有一个小时。不过,我希望 'datestring' 的时间相同(15 小时,而不是 16 小时)。 你能帮帮我吗?

非常感谢

您输入的字符串采用 ISO-8601 格式。在此格式中,末尾的 Z 表示时间戳是基于 UTC 的。

您可以使用 .toUTCString() 方法获得更人性化的基于 UTC 的字符串表示形式。

var datestring = "2017-10-30T15:03:10.933044Z";
var d = new Date(datestring);
var s = d.toUTCString();
console.log(s) // "Mon, 30 Oct 2017 15:03:10 GMT"

如果您想要特定格式的字符串,请考虑使用像 Moment.js.

这样的库

根据 ECMA-262,如果您想将 ISO 8601 格式的 UTC 时间戳视为本地时间戳,只需删除 Z。但是,如果本地时区不是 GMT+0000,它现在将代表不同的时刻.

此外,不推荐使用内置解析器(参见 Why does Date.parse give incorrect results?),因为某些浏览器仍会将其视为 UTC(例如 Safari 11)或可能无效。您应该编写自己的函数来解析字符串,或者使用库。有很多好的解析和格式化库可用。

var s = '2017-10-30T15:03:10.933044Z';
var d = new Date(s.replace(/z/i,''));
console.log(d.toString());