Javascript new Date()在Chrome或Firefox中显示不同的结果

Javascript new Date()在Chrome或Firefox中显示不同的结果,javascript,google-chrome,date,firefox,Javascript,Google Chrome,Date,Firefox,奇怪的是,不同的结果会导致新日期的不同浏览器() 铬合金45.0.2454.101米: new Date(2015,9,1) Thu Oct 01 2015 00:00:00 GMT+0200 (W. Europe Daylight Time) Firefox 40.0.3中的(默认检查器/控制台) 其他信息 如果我尝试在Firefox中使用FIREBUG扩展的控制台,它的工作原理与Chrome很相似。 发生了什么事?Firefox似乎没有计算偏移量,事实上它比正确的日期晚了2个小时。 我在其

奇怪的是,不同的结果会导致新日期的不同浏览器()

铬合金45.0.2454.101米:

new Date(2015,9,1)
Thu Oct 01 2015 00:00:00 GMT+0200 (W. Europe Daylight Time)
Firefox 40.0.3中的(默认检查器/控制台)

其他信息
如果我尝试在Firefox中使用FIREBUG扩展的控制台,它的工作原理与Chrome很相似。 发生了什么事?Firefox似乎没有计算偏移量,事实上它比正确的日期晚了2个小时。
我在其他工作站上进行了测试,所有的工作站似乎都有这个“错误”。

如果您不想包含时区偏移量,可以使用Date.UTC

注意:其中Date被称为具有多个 参数,指定的参数表示本地时间。如果UTC是 如果需要,请使用具有相同参数的新日期(Date.UTC(…)

~

Firefox开发控制台的输出:

> new Date(2015,9,1)
  Date 2015-09-30T22:00:00.000Z  // reproduces your problem, my local time is GMT+0200
> new Date(Date.UTC(2015,9,1))
  Date 2015-10-01T00:00:00.000Z // UTC time
然而,
00:00:00 GMT+0200
22:00:00.000Z
只是在日期字符串表示中表示时区偏移量的不同方式。区别在于打印到控制台时使用的方法:大多数浏览器使用
.toString()
,而Firefox使用
.toISOString()
。(已编辑;之前指出,
toString
方法实现不同,这是不正确的)


在Chrome(
Thu Oct 01 2015 00:00:00 GMT+0200
)和Firefox(
Date 2015-09-30T22:00:00.000Z
)中,像
.getDate()
.getMonth()
这样的方法返回相同的值(
1
9
)。日期对象是相同的。

这只是调试控制台的行为。显示的两个日期值都相同,并且是正确的值。您只需在Chrome中看到本地时间,而Firefox选择在调试控制台中显示UTC时间

更准确地说,Chrome、IE和大多数其他浏览器只需在对象上调用
.toString()
,而Firefox则调用
.toISOString()


请注意,Firefox有一个错误,我们显示了错误的时区名称(标准而非日光),但您可以看到调试器值与ISO8601 UTC值匹配。

这可能与此有关吗?它实际上不是
Date.toString()
实现。那很好。只是FF中的调试器使用了
Date.toISOString()
> new Date(2015,9,1)
  Date 2015-09-30T22:00:00.000Z  // reproduces your problem, my local time is GMT+0200
> new Date(Date.UTC(2015,9,1))
  Date 2015-10-01T00:00:00.000Z // UTC time