Centos está dando fecha y hora incorrecta para todas las fechas inferiores al año 1905 de NodeJS

Centos está dando fecha y hora incorrecta para todas las fechas inferiores al año 1905 de NodeJS

Estoy teniendo una situación rara. Recientemente, me mudé de la nube de Azure al servidor Digital Ocean. Estoy usando Nodejs versión v10.15.0 y Centos 7.

Mi salida timedatectl es

[deploy@prod-ca-api install-scripts]$ timedatectl
Local time: Tue 2019-03-19 15:34:21 IST
Universal time: Tue 2019-03-19 10:04:21 UTC
RTC time: Tue 2019-03-19 10:04:21
Time zone: Asia/Kolkata (IST, +0530)
NTP enabled: no
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a
[deploy@prod-ca-api install-scripts]$ 

La salida de la fecha al configurar las horas de inicio del día me proporciona la salida adecuada para la fecha actual. Pero lo mismo responde con 24 minutos de diferencia para fechas inferiores al año 1900.

Mi configuración de zona horaria está en IST (+5.30)

[deploy@prod-ca-api install-scripts]$ date
Tue Mar 19 15:36:57 IST 2019
[deploy@prod-ca-api install-scripts]$ node
> let a = new Date()
undefined
> a.setHours(0,0,0,0)
1552933800000
> a
2019-03-18T18:30:00.000Z
> a = new Date('1700-01-01')
1700-01-01T00:00:00.000Z
> a.setHours(0,0,0,0)
-8520357208000
> a
1699-12-31T18:06:32.000Z

Anteriormente, en los servidores de Azure, solía obtener 1699-12-31T18:30:00.000Zen lugar de1699-12-31T18:06:32.000Z

Respuesta1

Creo que la hora adecuada debería ser las 18:06. Llegué a esta conclusión después de leer este artículo:https://www.dailyo.in/variety/indian-standard-time-time-zones-bagan-time/story/1/17080.html

Las partes relevantes de este artículo son:

La hora estándar india, que se observa en la India y, bueno, no demasiado extrañamente, en la vecina Sri Lanka, donde la llaman hora estándar de Sri Lanka, tiene un desplazamiento de UTC+05:30.

Esto es claro y fácil de entender.

India no tuvo zona horaria oficial hasta 1906; Tuvimos tres presidencias: Bombay, Calcuta, Madrás y tres horas locales para las tres ciudades, dependiendo de dónde cayeran en la longitud. Las tres zonas horarias así creadas fueron seguidas por todos los estados o ciudades circundantes y cercanas.

Aquí es donde se pone interesante. Aparentemente, la India no tuvo zona horaria oficial hasta el 1 de enero de 1906. Lo cual concuerda con su investigación empírica.

Calcuta se fijó en UTC+05.54, por lo que es +00:24 de la IST actual.

Esto explicaría el extraño comportamiento en NodeJS (más o menos). De nuevo en línea con su investigación.

Hay mucho más en esta historia, pero de todos modos concluiría que el momento podría ser el correcto en ambos casos. Es muy difícil determinar la hora exacta para estas fechas antiguas, porque ni siquiera existía toda la zona horaria. En general, no deberías confiar en fechas antiguas, porque las zonas horarias pueden ser muy confusas y es posible que los países también hayan estado usando calendarios diferentes. Además, no existen casos de uso realistas para el uso de fechas en 1600, por ejemplo.

información relacionada