浏览器解析日期的方式不同

Difference in how browsers parse dates

有人可以向我解释为什么如果我将以下内容粘贴到 Chrome 和 Firefox 的控制台中,我会得到不同的结果

new Date("2014-12-01")

Chrome中的输出:

Sun Nov 30 2014 18:00:00 GMT-0600 (CST)

Firefox 中的输出:

Date 2014-12-01T00:00:00.000Z

是的,您没有看错。 Chrome 将其呈现为一天前。

每个浏览器都会在控制台中显示所需的日期。

在你的情况下,Firefox 似乎在后台使用 Date.prototype.toISOString

new Date("2014-12-01").toISOString(); // "2014-12-01T00:00:00.000Z"

而Chrome好像用的是Date.prototype.toString。就我而言,在 Chrome 和我的时区,我得到

new Date("2014-12-01");
    // Mon Dec 01 2014 01:00:00 GMT+0100 (Hora estándar romance)
new Date("2014-12-01").toString();
    //"Mon Dec 01 2014 01:00:00 GMT+0100 (Hora estándar romance)"

但是,请注意 Chrome 不会将其呈现为前一天。只是它使用了 GMT-0600:

Date.parse("Sun Nov 30 2014 18:00:00 GMT-0600 (CST)"); // 1417392000000
Date.parse("2014-12-01T00:00:00.000Z");                // 1417392000000

我认为 Chrome 的读数与您的区域设置有关,因为它将 GMT 条目转换为您的时区并进行必要的调整,无论是减去、添加还是保持原样。