Летнее время в JavaScript на 1974?

"В течение лет "энергетического кризиса" Конгресс выполнил более ранние сроки начала работы в течение летнего времени. В 1974 летнее время началось 6 января, и в 1975 оно началось 23 февраля. После тех двух лет срок начала работы вернулся назад к прошлому воскресенью в апреле".
(с помощью http://aa.usno.navy.mil/faq/docs/daylight_time.php)

Кажется, существует ошибка в объекте даты JavaScript для этих дат. При преобразовании 127627200000 миллисекунд в дату это должен быть четверг Jan 17 0:00:00 EDT 1974. Это корректно на http://www.fileformat.info/tip/java/date2millis.htm, но неправильно на http://www.esqsoft.com/javascript_examples/date-to-epoch.htm, в котором говорится, что это преобразовывает в 23:00:00 Jan 16 1974 в среду (Восточное стандартное время) GMT-0500. При создании новой Даты (127627200000) объект в JavaScript он дает последнее преобразование даты. Это происходит во всех главных браузерах.

Я не могу предположить, что это время сначала, что это было проблемой для любого, но я не могу найти никакие другие случаи этой проблемы с несколькими поисками онлайн. Кто-либо знает, существует ли существующая фиксация для этого или более легкая фиксация, чем ручная проверка дат, JavaScript имеет преобразование неправильно? Есть ли другие даты, это - проблема?

11
задан Lance Roberts 21 January 2010 в 21:58
поделиться

2 ответа

Как всегда, лучше всего проверить спецификацию :)

В данном случае, я был довольно шокирован, увидев это в разделе 15.9.1.9 из ECMA-262:

Реализация ECMAScript не следует пытаться определить, является ли точное время было подвержено дневному свету экономя время, но только если дневной свет экономия времени была бы в силе если текущее летнее время В то время использовался алгоритм. Это позволяет избежать таких осложнений, как принимая во внимание годы, когда наблюдаемое летнее время круглый год.

Другими словами, соответствующая реализация ECMAScript не позволяет быть исторически точной.

Теперь, следуют ли все реализации этому или нет, я не уверен... но это предполагает, что вам понадобится какая-то отдельная библиотека, если вы хотите получить исторически точные часовые пояса... где "исторически точные" не обязательно должны быть почти до 1974 года, конечно: США изменили свой график DST в 2007 году, а другие страны сделали это совсем недавно (и с меньшим количеством предупреждений).


1 Первое событие 15.9.1.9. По каким-то причинам это происходит дважды - один раз для "Настройки летнего времени" и один раз для "Местного времени". Ничего себе.

13
ответ дан 3 December 2019 в 08:55
поделиться

Java делает исторические часовые пояса (вернувшись около 1920), JavaScript, по-видимому, не делает.

0
ответ дан 3 December 2019 в 08:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: