新date(unix)返回不一致的时区

我在JavaScript的Date构造函数中发现了奇怪的行为。 它在不同的时区下为不同的毫秒值创build时间。 我在纽约,所以我希望他们都出来作为EST ,但有些出来作为EDT

 // EST as I expect: new Date(1446613200000) Wed Nov 04 2015 00:00:00 GMT-0500 (EST) new Date(1446440400000) Mon Nov 02 2015 00:00:00 GMT-0500 (EST) // EDT for some reason: new Date(1446354000000) Sun Nov 01 2015 01:00:00 GMT-0400 (EDT) new Date(1446181200000) Fri Oct 30 2015 01:00:00 GMT-0400 (EDT) 

我可以在Chrome和nodejs中重现这一点,但不能在Firefox中重现。 我想这与V8有关? 任何人都有这个解释?

由于JS影响getHours的输出,所以JS没有提供任何改变Date对象的时区的function。

我在纽约,所以我希望他们都出来作为东部时间,但有些出来作为美国东部时间。

是的,那些在夏令时期间指定date/时间的地方出现在东部夏令时(EDT)(东部夏令时),而不是东部时区(东部标准时间)。 unix时期值没有关联的时区,只是toString根据“本地时间”的解释生成一个string。 如果你使用了toISOString ,你会得到所有的UTC表示。

date没有JS中的时区。 这只是格式化人员(使用toUTCString()getUTCHour()来获取它)。 对于您当地的时区,格式化程序在夏季时使用夏令时。