Moin,
nein, die Frage lautete: wie wird mit dem 29.4. des Jahres 1415 umgegangen? Gibt es Algorithmen, die die Ungenauigkeit der 365.25 Tage ausgleichen?
Es gibt keine Ungenauigkeit, für alles gibt es Regeln. Die bekannteste ist die Berechnung des Schaltjahres alle vier Jahre. Teilt man das Jahr durch 4, und es gibt keine Nachkommastellen, ist es ein Schaltjahr.
Beispiel:
if Frac(2020/4) = 0 then ShowMessage('Schaltjahr');
oder
if (2020 mod 4) = 0 then ShowMessage('Schaltjahr');
Die nächste Regel ist, dass wenn die obere Regel ein Schaltjahr berechnet, man aber das Jahr durch 100 teilen kann (ohne Nachkommastellen), man das Schaltjahr auslässt.
Delphi-Quellcode:
if (2000 mod 4) = 0 then ShowMessage('Schaltjahr');
if (2000 mod 100) = 0 then ShowMessage('doch kein Schaltjahr');
Davon gibt es wiederum eine Ausnahme. Wenn es nach der 4 Jahres-Regel ein Schaltjahr ist, und nach der 100 Jahre-Regel kein Schaltjahr ist, man es aber durch 400 teilen kann (wieder ohne Nachkommastellen), dann ist es doch ein Schaltjahr.
Delphi-Quellcode:
var
a: Integer;
begin
a := 2300;
if (a mod 400) = 0 then
ShowMessage('Es ist ein Schlatjahr')
else if (a mod 100) = 0 then
ShowMessage('Es ist KEIN Schlatjahr')
else if (a mod 4) = 0 then
ShowMessage('Es ist ein Schlatjahr')
else
ShowMessage('Es ist KEIN Schlatjahr');
end;