Registriert seit: 18. Nov 2017
133 Beiträge
Delphi 12 Athens
|
AW: Was haut bei dieser Wochentagsberechnung nicht hin?
27. Okt 2018, 15:42
Hallo Ave,
versuch das mal
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
JahrInt,JahrIntLow,JahrIntHigh,
b1,b2,b3,b4,
Day,DayI,
Monat:integer;
JahrStr: string;
begin
JahrInt:=strtoint(edit1.Text); // vierstellige Jahreszahl!
Day:=strtoint(edit2.Text); // Tag
Monat:=strtoint(edit3.Text); // Monat
b1:=5*((JahrInt-1) mod 4)+1; // nach: Carl Friedrich Gauss
b2:=4*((JahrInt-1) mod 100);
b3:=6*((JahrInt-1) mod 400);
b4:= (b1+b2+b3) mod 7;
case b4 of
0: label1.caption:=' Sonntag';
1: label1.caption:=' Montag';
2: label1.caption:=' Dienstag';
3: label1.caption:=' Mittwoch';
4: label1.caption:=' Donnerstag';
5: label1.caption:=' Freitag';
6: label1.caption:=' Samstag';
end;
// Informationsquelle für die nachfolgenden Bererchnungen:
// https://de.wikipedia.org/wiki/Wochentagsberechnung
if Monat < 3 then
begin
Monat:= Monat + 10;
dec(JahrInt); // oder JahrInt:= JahrInt - 1;
end else dec(Monat,2); // oder Monat:= Monat - 2;
JahrStr:=IntToStr(JahrInt);
JahrIntHigh:=StrToInt(Copy(JahrStr,1,2));
JahrIntLow:=StrToInt(Copy(JahrStr,3,2));
// Unit Math (Lazarus) oder System.Math (Delphi) einbinden
DayI:=(Day+Floor(2.6*Monat-0.2)+JahrIntLow+Floor(JahrIntLow/4)+Floor(JahrIntHigh/4)-2*JahrIntHigh) mod 7;
if DayI<0 then DayI:=DayI + 7;
case DayI of
0: label2.caption:=' Sonntag';
1: label2.caption:=' Montag';
2: label2.caption:=' Dienstag';
3: label2.caption:=' Mittwoch';
4: label2.caption:=' Donnerstag';
5: label2.caption:=' Freitag';
6: label2.caption:=' Samstag';
end;
end;
|
|
Zitat
|