Die vollständig umgesetzten Schaltjahresregeln habe ich in der Code-Lib nicht gefunden.
Daher poste ich sie hier. Zum
Exception-Handling hat
sx2008 beigetragen.
Delphi-Quellcode:
//Wolfgang Mix, Delphi-PRAXiS
function IsLeapyearAdv(year:integer):boolean;
begin
result:=false;
case year
of
-4713..-1 :result:=(year+1)
mod 4=0;
// -45: Cäsars Reform
1 .. 1582 :result:= year
mod 4=0;
1583..9999:result:=(year
mod 4 =0)
and ((year
mod 100 <> 0)
or (year
mod 400=0));
else raise Exception.CreateFmt('
IsLeapYear(%d) - invalid arg', [year]);
end;
end;
Anmerkung: Die Schaltjahresermittlungen vor Chr. beziehen sich auf den von
Scaliger entwickelten Kalender und ist nur eine von vielen Möglichkeiten,
den Kalenderbereich zu erweitern. Für andere Definitionen ist der Code
entsprechend abzuändern.
[edit=fkerber]Für die Code-Lib aufbereitet. Mfg, fkerber[/edit]