当我建立一个日期形式是ISO字符串“2016-02-01T16:00:00Z”我星期一2016年2月1日17:00:00 GMT + 0100javascript日期时区奇怪的行为
它的接缝的js由于某些原因增加了一小时。
我认为它是一个时区的事情......但我该如何解决这个问题?
只是做
var date = new Date('2016-02-01T16:00:00Z');
alert(date);
当我建立一个日期形式是ISO字符串“2016-02-01T16:00:00Z”我星期一2016年2月1日17:00:00 GMT + 0100javascript日期时区奇怪的行为
它的接缝的js由于某些原因增加了一小时。
我认为它是一个时区的事情......但我该如何解决这个问题?
只是做
var date = new Date('2016-02-01T16:00:00Z');
alert(date);
根据规范,将ISO日期字符串解析为UTC + 0000,这在末尾用Z
char表示。
Z是对于零UTC的区标志偏移
在您指明为Date()
构造函数的日期时间字符串,它解析为UTC。
方法Date.prototype.toString()
根据您的时区格式化日期,该日期可能与UTC不同。因为你得到这个抵消。
这可能表明在ISO字符串的结尾自定义时区与±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
+1来看出,但是,使用Date构造函数解析字符串是不可靠的并且不推荐,这比手动解析字符串更好(一个库可以帮助但不是在大多数情况下是必要的) – RobG
的Javascript需要你的时间字符串,解析它表明(UTC)的时区,但随后显示它在当前的时区。
当我运行你的代码片段时,我得到了GMT-05:00(EST)。
所以它不会增加一个小时。它只是在当地时区输出日期。
这是正确的,它以不同的方式印刷。这可以通过打印date.toString()和date.toUTCString() – Sandman
你需要考虑到的timezoneoffset Date.getTimezoneOffset()
显示在不同的时区相同的日期。例如以分钟为单位的偏移量转换为小时并将其添加到您的时间,或编写函数以根据时区偏移量转换日期Like here
下面的答案有帮助吗? – jszobody