Использует ли объект Date когда-либо не григорианский календарь?

Является ли объект Date в Javascript когда-либо использовать не-григорианский календарь?

MDN и MSDN описывают методы на объект Date и ссылка UTC и IETF-совместимый RFC 2822 метки времени.

В статье в Википедии упоминается

Дни условно идентифицируются с использованием григорианского календаря, но также могут использоваться номера юлианских дней.

В документации MDN и MSDN говорится, что методы, отличные от UTC, относятся к "местному времени", но не определяют, что такое "местное время".

Я работаю над взаимодействием с веб-сервисом, который возвращает мне некоторые данные, которые включают поле дня в год, которое мне нужно сравнить с текущим днем. Я хорошо осведомлен о ловушках, полагающихся на точное время с пользовательской машины, и прекрасно справляется с любыми проблемами, которые возникают из-за плохих часовых поясов и фиктивных настроек даты.

Я обеспокоен тем, что пользователи в локалях, которые не используют григорианский календарь, и то, что их браузеры вернут, если я использую методы .getDate(), .getMonth() и .getFullYear() для вычисления дневного времени, в год.

Итак, на практике ли "местное время" в Javascript когда-либо ссылается на не григорианскую систему календаря, такую ​​как иврит или персидские календари?

Ответ 1

Из ECMAScript спецификации (3-е издание и 5-е издание почти идентичны в этом отношении, но я цитирую пятый):

15.9.1.9 Локальное время

Конвертация с UTC на местное время определяется

LocalTime(t) = t + LocalTZA + DaylightSavingTA(t)

Конвертация с локального времени в UTC определяется

UTC(t) = t – LocalTZA – DaylightSavingTA(t – LocalTZA)

Обратите внимание, что UTC(LocalTime(t)) не всегда всегда равно t.

LocalTZA относится к локальной настройке часового пояса, а DaylightSavingTA - настройка для экономии дневного света.

Я не нашел никаких доказательств браузера (текущего или исторического), который делает что-то другое, если на пользовательском компьютере включен не григорианский календарь.

Ответ 2

Я просто тестировал, установив свой компьютер (Mac OS X 10.7.4), чтобы использовать календарь на иврите, а поведение объекта Date не повлияло на Safari, Firefox или Chrome. Похоже, он всегда использует григорианский календарь.

Ответ 3

Re: Объект Date в Javascript когда-либо использовал не-григорианский календарь?

Нет. Я не вижу никакой резервной копии для утверждения о том, что объект Date Javascript может использовать систему Julian Calendar.

Однако вы можете преобразовать объект даты Javascript (григорианскую дату) в Julian Day или Julian Date.

Юлианский день

Юлианский день используется в юнианской дате (JD) системе измерения времени для научного использования сообществом астрономии, представляя промежуток времени в днях и доли дня с 1 января 4713 года до н.э. Гринвичский полдень. Юлианская дата рекомендуется для астрономического использования Международным астрономическим союзом.

Юлианская дата

Термин "юлианская дата" широко используется для обозначения дня (порядковой даты), хотя это использование строго не соответствует стандартам, установленным некоторыми международными организациями.

* Источник для приведенных выше цитат - статья wikipedia, Julian_day

Обратите внимание, что ни один из форматов не включает месяцы, так как "Юлианская дата" и "Юлианский день" являются условиями для определенного представления дня в григорианском календаре. Вы можете сказать это по тому, что в определении юлианского дня используется григорианская дата: "4713 г. до н.э. Гринвичский полдень"