1974年Javascript中的夏令时?

时间:2010-01-19 19:23:29

标签: javascript dst

“在”能源危机“期间,国会制定了白昼时间的早期开始日期。1974年,白昼时间从1月6日开始,1975年开始于2月23日。在这两年之后,开始日期又回到了四月的最后一个星期天。“ (通过http://aa.usno.navy.mil/faq/docs/daylight_time.php

这些日期的Javascript日期对象中似乎存在错误。如果您将127627200000毫秒转换为日期,那么它应该是美国东部时间1974年1月17日00:00:00。这在http://www.fileformat.info/tip/java/date2millis.htm上是正确的,但不正确 http://www.esqsoft.com/javascript_examples/date-to-epoch.htm,表示转换为1974年1月16日星期三19:00 23:00:00 GMT-0500(东部标准时间)。如果您在javascript中创建一个新的日期(127627200000)对象,它将提供后一个日期转换。这种情况发生在所有主流浏览器

我无法想象这是第一次这对任何人来说都是一个问题,但我在网上搜索时找不到任何其他此类问题。有没有人知道是否有一个现有的修复程序或更容易修复,而不是手动检查日期Javascript的转换错误?还有其他日期这是个问题吗?

2 个答案:

答案 0 :(得分:13)

与以往一样,最好检查规格:)

在这种情况下,我在ECMA-262的第15.9.1.9节中看到这一点感到非常震惊:

  

ECMAScript的实现   不应该试图确定是否   确切的时间受日光照射   节省时间,但只是日光   节省时间本来就有效   如果是当前的夏令时   当时已经使用了算法。   这避免了诸如此类的并发症   考虑到那些岁月   现场观察夏令时   全年。

换句话说,符合条件的ECMAScript实现不允许在历史上是准确的。

现在是否所有实现都遵循这一点,我不确定......但它确实建议你需要某种独立的库,如果你想获得历史上准确的时区......“历史上准确”当然,美国不会像1974年那样改变其DST时间表,而其他国家最近也是如此(并且警告较少)。


1 第一次出现15.9.1.9。出于某种原因,它会发生两次 - 一次用于“夏令时调整”,一次用于“本地时间”。哇。

答案 1 :(得分:0)

Java执行历史时区(回到1920年左右),JavaScript显然没有。