// Hiermit wird
ermittelt, den wievielte Tag eines Jahres ein Datum darstellt.
// Getestet mit D4 unter XP
//
Variante 1:
function WievielterTag(dat: TDate): integer;
var
hlp, erg: integer;
tag, monat, jahr: word;
begin
decodedate(dat, jahr, monat, tag);
hlp := (monat + 10) div 13;
erg := tag + (611 * (monat + 2)) div 20 - 2 * hlp - 91;
result := erg + ord(IsLeapYear(jahr)) * hlp;
end;
//
------------------------------------------------------
//
Variante 2:
function WievielterTag(dat: TDate): integer;
var
tag, monat, jahr: word;
begin
decodedate(dat, jahr, monat, tag);
result := trunc(dat - encodedate(jahr, 1, 1) + 1);
end;
//
------------------------------------------------------
// Beispielaufruf für beide Varianten
procedure TForm2.Button2Click(Sender: TObject);
begin
label1.caption := '31.12.2000';
label2.caption := inttostr(WievielterTag(strtodate(label1.caption)));
end;
|