Ohne Datenbank vielleicht so
Delphi-Quellcode:
procedure LastThursday(Date: TDate);
overload;
begin
LastThurday(DateUtils.YearOf(Date), DateUtils.MonthOf(Date));
end;
procedure LastThursday(Year, Month: Word);
overload;
var
i, tmp, Day, DaysMonth: Integer;
begin
DaysMonth := DaysInAMonth(Year, Month);
Day := DaysMonth;
while Day > 1
do // geht sicher auch kürzer, denn man braucht ja nur maximal 7 Tage ab Monatsende rückwärts zu prüfen
begin
tmp := (Day + 5)
mod 7;
if tmp = 5
then
begin
ShowMessage('
Letzter Donnerstag im Monat: ' + FormatDateTime('
dd/mm/yyyy', EncodeDate(Year, Month, Day)));
Break;
end;
Dec(Day);
end;
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
LastThurday(2017, 12);
LastThurday(DateUtils.YearOf(Date), DateUtils.MonthOf(Date));
LastThurday(Date);
end;
Zitat:
Eine Routine in Delphi gibt es wohl dazu nicht?
Jetzt schon.
Das geht noch 10x schöner und besser, das ist klar. Das ist dann aber Herr Raabes Job - der Code-Optimierer in Person.