【发布时间】:2017-05-22 14:18:57
【问题描述】:
Chrome 没有给出正确的日期转换结果:
日期:“2017-05-22T14:00:00”
在 chrome 控制台中执行此操作:
new Date("2017-05-22T14:00:00");
输出是:
Mon May 22 2017 14:00:00 GMT+0530 (IST)
这是错误的,因为我在 IST。它应该将输出作为
Mon May 22 2017 19:30:00 GMT+0530 (IST)
Safari 给出了正确的结果。 Chrome 之前是正确的,但我认为最新的更新有问题。
发现在日期字符串中附加 Z 会导致正确的日期值。
new Date("2017-05-22T14:00:00Z");
【问题讨论】:
-
使用字符串格式构造函数有什么技术原因吗? MDN 精彩地总结了这一点:由于浏览器的差异和不一致,强烈建议不要使用 Date 构造函数(和 Date.parse,它们是等效的)解析日期字符串
-
从服务中以这种格式接收日期字符串“2017-05-22T14:00:00”,我无法修改服务。那么应该怎样才能得到正确的结果呢?
-
见Why does Date.parse give incorrect results? 这不是一个错误,它是应该如何解析没有时区的 ISO 8601 字符串(但无论如何你都不应该使用内置解析器)。跨度>
标签: javascript google-chrome date timezone