Die häufigsten Kalenderfunktionen kommen mit dem gregorianischen Kalenderbereich aus.
Ich habe daher den 15.10.1582 als den gregorianischen Tag 1 definiert (ab 0 Uhr);
Gregor liefert die Tageszahl zu einem Datum, GregorToStr zu einer Tagesnummer
das Gregorianische Datum;
Ich freue mich wieder auf konstruktive Ergänzungen.
Aktualisierte Fassung
hier
Delphi-Quellcode:
function Gregor(d,m,yyyy:word):longint;
var Tmp:TDateTime;
begin
Tmp:=EncodeDate(yyyy,m,d);
result:=1+Round(tmp-StrToDate('
15.10.1582'));
if result<1
then raise Exception.CreateFmt('
Gregor(%d) - invalid date', [result])
end;
function GregorToStr(n:longint):
String;
begin
if (n<1)
or (n>3074324)
then
raise Exception.CreateFmt('
GregorToStr(%d) - invalid n', [n])
else
begin
n:=n-115859;
result:=DatetimeToStr(n);
end;
end;