夏令时 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());
我有这个问题。 我有这个格式的日期
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());