// 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;


 

Zugriffe seit 6.9.2001 auf Delphi-Ecke