Centos gibt für alle Daten unter dem Jahr 1905 von NodeJS eine falsche Datums- und Uhrzeitangabe an

Centos gibt für alle Daten unter dem Jahr 1905 von NodeJS eine falsche Datums- und Uhrzeitangabe an

Ich habe eine seltsame Situation. Vor Kurzem bin ich von der Azure-Cloud zum Digital Ocean-Server gewechselt. Ich verwende Nodejs Version v10.15.0 und Centos 7.

Meine timedatectl-Ausgabe ist

[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]$ 

Die Datumsausgabe durch Festlegen der Stunden für den Tagesbeginn liefert mir eine korrekte Ausgabe für das aktuelle Datum. Für Daten vor dem Jahr 1900 gibt es jedoch eine Differenz von 24 Minuten.

Meine Zeitzoneneinstellung ist 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

Bisher erhielt ich in Azure-Servern 1699-12-31T18:30:00.000Zstatt1699-12-31T18:06:32.000Z

Antwort1

Ich denke, die richtige Zeit müsste eigentlich 18:06 Uhr sein. Zu diesem Schluss bin ich gekommen, nachdem ich diesen Artikel gelesen habe:https://www.dailyo.in/variety/indian-standard-time-time-zones-bagan-time/story/1/17080.html

Relevante Teile dieses Artikels sind:

Die indische Standardzeit, die in Indien und – nicht allzu überraschend – auch im benachbarten Sri Lanka gilt, wo sie Sri-Lanka-Standardzeit genannt wird, hat eine Abweichung von UTC+05:30.

Dies ist klar und leicht zu verstehen.

Indien hatte bis 1906 keine offizielle Zeitzone. Wir hatten drei Präsidentschaften: Bombay, Kalkutta, Madras und drei Ortszeiten für die drei Städte, je nachdem, wo sie auf dem Längengrad lagen. Die so geschaffenen drei Zeitzonen galten für alle Staaten und Städte um sie herum und in der Nähe.

Hier wird es interessant. Indien hatte offenbar bis zum 1. Januar 1906 keine offizielle Zeitzone. Das steht im Einklang mit Ihrer empirischen Forschung.

Kalkutta wurde auf UTC+05.54 eingestellt, also +00:24 der aktuellen IST.

Dies würde das seltsame Verhalten in NodeJS (irgendwie) erklären. Wieder im Einklang mit Ihrer Forschung.

Es gibt noch viel mehr zu dieser Geschichte, aber ich würde trotzdem zu dem Schluss kommen, dass die Zeit in beiden Fällen richtig sein könnte. Es ist sehr schwer, die genaue Zeit für diese alten Daten zu bestimmen, da die gesamte Zeitzone noch nicht einmal existierte. Generell sollten Sie alten Daten nicht trauen, da Zeitzonen sehr verwirrend sein können und Länder möglicherweise auch unterschiedliche Kalender verwendet haben. Außerdem gibt es keine realistischen Anwendungsfälle für die Verwendung von Daten beispielsweise aus dem 17. Jahrhundert.

verwandte Informationen