Hallo nochmal,
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).
Ich habe das ganze gerade nochmal überprüft, die JS-Lösung liefert mir für die getTime()/1000-Werte folgendes:
11. August 1945: -767062800
12. September 1476: -15564531600
Und siehe da - schon der erste Timestamp liefert mir incht den 11. August 1945, sondern den 10. September 1945 um 23:00 UTC, da Date in JS in Lokalzeit arbeitet [1] also den 11. September 1945 Lokalzeit. Jetzt lese man sich mal den Abschnitt in SELFHTML zum Date-Objekt durch und siehe da:
| Wenn Sie einen Monat als Zahlenwert übergeben, so wie in den Varianten 3
| und 4, müssen Sie bei 0 zu zählen beginnen. Für Januar müssen Sie also 0
| übergeben, für Februar 1, und für Dezember 11. Dies ist auch der Grund,
| warum für den Monat Oktober nicht 10 sondern 9 übergeben wird.
Und wenn man nun das Date-Objekt richtig nutzt, liefert JS das korrekte Ergebnis:
(new Date(1945,7,11).getTime()-new Date(1476,8,12).getTime())/(1000*60*60*24)
Ergibt: 171266
Und nun stimmt wieder alles.
Viele Grüße,
Christian
[1] Und Zeitzonendaten vor einem bestimmten Datum wohl nicht kennt, weswegen es für diese Daten einen GMT-Offset von 1h annimmt bei Deutscher Zeit.