Einzelnen Beitrag anzeigen

Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#1

Vollständige Schaltjahresregeln - IsLeapYearAdv

  Alt 17. Jul 2009, 09:47
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]
Wolfgang Mix
  Mit Zitat antworten Zitat