var dt = new Date("2012-04-23T12:00:00");
var dtz = new Date("2012-04-23T12:00:00Z");
如果 Z 存在,我会得到不同的时间。
当 Z 存在时,它将日期转换为浏览器的本地时间,而当它不存在时,假设它已经在本地时间?
我在 FF 中得到的结果与 Chrome 不同。Chrome 总是给我同样的时间。FF 将它们视为不同。我应该如何处理来自服务器的 UTC 日期?
var dt = new Date("2012-04-23T12:00:00");
var dtz = new Date("2012-04-23T12:00:00Z");
如果 Z 存在,我会得到不同的时间。
当 Z 存在时,它将日期转换为浏览器的本地时间,而当它不存在时,假设它已经在本地时间?
我在 FF 中得到的结果与 Chrome 不同。Chrome 总是给我同样的时间。FF 将它们视为不同。我应该如何处理来自服务器的 UTC 日期?
var dt = new Date("2012-04-23T12:00:00");
var dtz = new Date("2012-04-23T12:00:00Z");
用 alert() 试了一下,得到了这些消息
警报(dt);
Mon Apr 23 2012 12:00:00 GMT+0500 (West Asia Standard Time)
警报(dtz);
Mon Apr 23 2012 17:00:00 GMT+0500 (West Asia Standard Time)
这意味着如果您创建没有“Z”的日期,它将返回浏览器在 GMT 的本地时间,说明您的时区低于或高于 GMT
如果您使用“Z”创建它,它将显示您所在时区的当地时间,参考您所在的时区。
根据 ISO 8601,如果没有给出带有时间表示的 UTC 关系信息,则假定时间为本地时间。
如果可以在 Firefox、Safari 和 Internet Explorer 上验证正确的行为:
以下应返回:false
new Date("2014-05-09T22:12:18.893Z").valueOf() === new Date("2014-05-09T22:12:18.893").valueOf()
如果您在 Chrome 或 Opera 上尝试相同的操作,它会错误地指示:true
这个故事的寓意是,如果您有上述格式的字符串,请在末尾添加一个 Z。