Für solche Berechnungen kennt die Astronomie das Julianische Datum; hat nichts mit dem Julianischen Kalender zu tun.
Die Tage werden fortlaufend ab dem 1.1.4713 v.Z. 12 Uhr durchnummeriert.
Algorithmus:
Gegeben ist ein beliebiges (gültiges) Datum (tag.monat.jahr) sowohl im Gregorianischen als auch Julianischen Kalender. Dann gibt folgender Algorithmus das Julianische Datum JD.
K = 10000· jahr + 100·monat + tag
B = -63,5
Y = jahr + 4712
M = monat + 1
Wenn monat <= 2 dann Y = Y-1 und M = M +12
Wenn K >= 15821015 dann A = INT[(Y+88)/100]
und B = B +38 - A + INT[A/4]
JD = INT[365,25·Y] + INT[30,6001·M] + tag +B
INT[ ] ist dabei der ganzzahlige Anteil des Ergebnisses
Die Differenz zweier Julianischer Daten ist dann die Anzahl der Tage zwischen den Daten.
LG Steffen
Kann man auch kürzer schreiben:
Delphi-Quellcode:
function JD(dt: TDateTime): Double;
begin
JD := dt + 2415018.5;
end;
/Edit: für dt>=0, da TDateTime in Delphi dämlich definiert ist