2012-05-23 9 views
10

¿El objeto Date en Javascript utiliza alguna vez un calendario no gregoriano?¿Alguna vez el objeto Date usa un calendario no gregoriano?

Los MDN y MSDN docs describen los métodos en el objeto Date y referencia UTC y IETF-compliant RFC 2822 timestamps.

El artículo de Wikipedia menciones

Días se identifican convencionalmente utilizando el calendario gregoriano, pero el número de día juliano también se puede utilizar.

La documentación de MDN y MSDN solo dice que los métodos que no son UTC hacen referencia a la "hora local", pero no definen qué es "hora local".

Estoy trabajando en la interacción con un servicio web que me está devolviendo algunos datos que incluyen un campo de día de año, que tengo que comparar con el día actual del año. Soy muy consciente de las dificultades de confiar en un momento preciso de la máquina de un usuario, y estoy de acuerdo con cualquier problema que resulte de zonas horarias malas y configuraciones de fechas falsas.

a mí respecta, sin embargo, acerca de los usuarios en lugares que no utilizan el calendario gregoriano, y cuáles son sus navegadores devolverá si uso las .getDate(), .getMonth() y .getFullYear() métodos para calcular los días de año.

De modo que, en la práctica, ¿la "hora local" en Javascript se refiere a un sistema de calendario no gregoriano, como los calendarios hebreo o persa?

+0

Estoy bastante seguro de que la "hora local" se refiere al desplazamiento de la zona horaria de UTC. Sin embargo, la pregunta sigue siendo interesante: puede 'getMonth()' alguna vez devolver algo más grande que 11, por ejemplo. Sospecho fuertemente que la respuesta es "no", pero no tengo evidencia. – Pointy

+0

@Pointy, las especificaciones ECMA-262 dicen que la hora local == utc + ajuste de zona horaria + ajuste de horario de días de luz. Sin embargo, todos sabemos lo que dicen las especificaciones y lo que hacen los navegadores no siempre son lo mismo. – mpdonadio

+1

Los días julianos no son un sistema de calendario por separado: un día juliano es simplemente el número fraccional de días desde el mediodía del 1 de enero de 4713 aC. Tipo de tiempo UNIX, excepto con días, y con una época mucho más antigua. https://en.wikipedia.org/wiki/Julian_day – duskwuff

Respuesta

0

De los ECMAScript especificaciones (3rd edition y 5th edition son casi idénticos en este sentido, pero estoy citando la quinta):

15.9.1.9 hora local

La conversión de UTC a la hora local se define por

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

La conversión de la hora local a UTC se define por

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

Tenga en cuenta que UTC(LocalTime(t)) no siempre es necesariamente igual a t.

LocalTZA se refiere a ajuste de zona horaria local y DaylightSavingTA es el ajuste para los cambios de horario.

No he encontrado ninguna evidencia de un navegador (actual o histórico) que haga algo diferente cuando un calendario no gregoriano está habilitado en la máquina de un usuario.

2

Acabo de probar estableciendo mi computadora (Mac OS X 10.7.4) para usar el calendario hebreo, y el comportamiento del objeto Date no se vio afectado en Safari, Firefox o Chrome. Parece que siempre usa el calendario gregoriano.

2

Re: ¿Alguna vez el objeto Date en Javascript usa un calendario no gregoriano?

No. No veo ninguna copia de seguridad para afirmar que el objeto Fecha de Javascript puede usar el sistema de calendario juliano.

Sin embargo, puede convertir un objeto de fecha JavaScript (una fecha gregoriana) en Julian Day o Julian Date.

Julian Día

día Juliano se utiliza en la fecha juliana sistema (JD) de la medición del tiempo para uso científico por la comunidad astronómica, presentando el intervalo de tiempo en días y fracciones de día desde el 1 de enero de 4713 aC Greenwich mediodía. Julian fecha es recomendado para uso astronómico por la Unión Astronómica Internacional.

Julian Fecha

El término fecha juliana es ampliamente utilizado para referirse a la (fecha ordinal) días de año aunque este uso no es estrictamente de acuerdo con las normas establecido por algunas organizaciones internacionales.

* Fuente de las citas anteriores es un artículo de Wikipedia, Julian_day

Nota que ni formato implica meses desde "fecha juliana" y "día Juliano" son términos de una representación particular de un día en el calendario gregoriano. Se puede decir esto por el hecho de que el día definición Julian utiliza una fecha gregoriana: "mediodía 4713 aC Greenwich"

Cuestiones relacionadas