Christian Seiler: Funktion mit Rückgabe des Datums vor 365 Tagen

Beitrag lesen

Hallo!

(new Date(1945,8,11).getTime()-new Date(1476,9,12).getTime())/(1000*60*60*24)
ergibt 171267

Das ist leider falsch. 171258 wäre richtig. Beide Datumsangaben oben beziehen sich auf den greg. Kal., sorry, hatte ich vergessen zu posten.

Ist aber dummerweise beides falsch.

Der 11. August 1945 hatte die julianische Tageszahl 2431679. Der 12. September 1476 die julianische Tageszahl 2260413 (proleptischer gregorianischer Kalender, d.h. ISO 8601, angenommen). Die Differenz beider Werte ist 171266 Tage. Die JavaScript-Lösung verrechnet sich hier also um einen Tag. Meine Vermutung ist hier jedoch, dass - da die JS-Lösung in Millisekunden rechnet - dies durch mangelnde Präzision verursacht wird (oder in den Datumsroutinen der Browser ist ein Bug, kann natürlich auch sein).

Wenn man nun keinen proleptischen gregorianischen Kalender annimmt, sondern für Daten bis einschließlich dem 4. Oktober 1582 den julianischen Kalender und für Daten ab einschließlich dem 15. Oktober 1582 den gregorianischen Kalender, dann bleibt 2431679 die jul. Tageszahl des 11. August 1945 (nach 1582), aber der 12. September 1476 besitzt dann (vor 1582) die jul. Tageszahl 2260422 - was einer Differenz von 171257 Tagen entspricht, was nur um 1 von Deiner genannten Zahl abweicht. Du hast also nicht den gregorianischen Kalender verwendet, sondern sowohl gregorianischen als auch julianischen in Abhängigkeit des Datums (was zwar prinzipiell in Ordnung ist, weil das in jedem Geschichtsbuch genauso gemacht wird, aber nicht dem entspricht, was Du hier behauptet hast). Außerdem ist Deine Rechnung ebenfalls um 1 daneben.

Viele Grüße,
Christian