JavaScript 日期时区奇怪的行为
JavaScript date timezone strange behavior
当我从这个 ISO 字符串“2016-02-01T16:00:00Z”构建日期时,我得到了 Mon Feb 01 2016 17:00:00 GMT+0100
由于某些原因,js 似乎增加了一个小时。
我认为这是时区问题...但我该如何解决这个问题?
就这样
var date = new Date('2016-02-01T16:00:00Z');
alert(date);
Javascript 获取您的日期时间字符串,在指定的时区 (UTC) 中对其进行解析,然后 在您当前的时区中显示。
当我 运行 你的代码片段时,我得到 GMT-05:00 (EST)。
所以它不会增加一个小时。它只是输出您当地时区的日期。
根据规范,ISO 日期字符串被解析为 UTC+0000,由末尾的 Z
字符指示。
Z is the zone designator for the zero UTC offset
当您为 Date()
构造函数指定日期时间字符串时,它会以 UTC 格式解析。
Date.prototype.toString()
方法根据您的时区格式化日期,这可能与 UTC 不同。因此你得到了这个偏移量。
可以使用 ±hh:mm
:
在 ISO 字符串末尾指示自定义时区
var d = new Date('2016-02-01T16:00:00+01:00');
d.toString() // will print "Feb 01 2016 16:00:00 GMT+0100", if you're in GMT+01:00
您需要考虑 TimeZoneOffset Date.getTimezoneOffset()
以在不同时区显示相同日期。例如,将以分钟为单位的偏移量转换为小时并将其添加到您的时间中,或者编写函数以转换具有依赖时区偏移量的日期 Like
当我从这个 ISO 字符串“2016-02-01T16:00:00Z”构建日期时,我得到了 Mon Feb 01 2016 17:00:00 GMT+0100
由于某些原因,js 似乎增加了一个小时。
我认为这是时区问题...但我该如何解决这个问题?
就这样
var date = new Date('2016-02-01T16:00:00Z');
alert(date);
Javascript 获取您的日期时间字符串,在指定的时区 (UTC) 中对其进行解析,然后 在您当前的时区中显示。
当我 运行 你的代码片段时,我得到 GMT-05:00 (EST)。
所以它不会增加一个小时。它只是输出您当地时区的日期。
根据规范,ISO 日期字符串被解析为 UTC+0000,由末尾的 Z
字符指示。
Z is the zone designator for the zero UTC offset
当您为 Date()
构造函数指定日期时间字符串时,它会以 UTC 格式解析。
Date.prototype.toString()
方法根据您的时区格式化日期,这可能与 UTC 不同。因此你得到了这个偏移量。
可以使用 ±hh:mm
:
var d = new Date('2016-02-01T16:00:00+01:00');
d.toString() // will print "Feb 01 2016 16:00:00 GMT+0100", if you're in GMT+01:00
您需要考虑 TimeZoneOffset Date.getTimezoneOffset()
以在不同时区显示相同日期。例如,将以分钟为单位的偏移量转换为小时并将其添加到您的时间中,或者编写函数以转换具有依赖时区偏移量的日期 Like