当我从这个 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);
最佳答案
根据规范,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
关于JavaScript 日期时区奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35659230/