new Date(unix) 返回不一致的时区
new Date(unix) returning inconsistent time zone
我在 JavaScript 的 Date
构造函数中发现了奇怪的行为。它为不同的 unix 毫秒值创建不同时区下的时间。我在纽约,所以我希望它们都以 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 没有提供任何合理的实用程序来更改 Date
对象的时区,因为它会影响 getHours
.
的输出
日期在 JS 中没有附加时区。它只是执行它的格式化程序(使用 toUTCString()
或 getUTCHour()
来获得它)。对于您当地的时区,格式化程序在日期为夏季时使用夏令时。
I am in New York, so I expect them all to come out as EST, but some come out as EDT instead.
是的,在您所在区域的夏令时期间指定 date/time 的是 EDT(东部夏令时)而不是 EST(东部标准时间)。 unix 纪元值没有关联的时区,只是 toString
根据对它的 "local time" 解释生成一个字符串。如果您使用 toISOString
,您将获得所有这些的 UTC 表示。
我在 JavaScript 的 Date
构造函数中发现了奇怪的行为。它为不同的 unix 毫秒值创建不同时区下的时间。我在纽约,所以我希望它们都以 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 没有提供任何合理的实用程序来更改 Date
对象的时区,因为它会影响 getHours
.
日期在 JS 中没有附加时区。它只是执行它的格式化程序(使用 toUTCString()
或 getUTCHour()
来获得它)。对于您当地的时区,格式化程序在日期为夏季时使用夏令时。
I am in New York, so I expect them all to come out as EST, but some come out as EDT instead.
是的,在您所在区域的夏令时期间指定 date/time 的是 EDT(东部夏令时)而不是 EST(东部标准时间)。 unix 纪元值没有关联的时区,只是 toString
根据对它的 "local time" 解释生成一个字符串。如果您使用 toISOString
,您将获得所有这些的 UTC 表示。