Aktualisierte Fassung
hier
Die Gegenfunktion habe ich wieder 'mal nicht im Netz gefunden,
deshalb wieder selbst gecodet. Habe einige Daten getestet,
der Code scheint sicher zu sein.
Wäre nett, wenn einige von Euch mittesten würden.
Optimiert wird dann später ...
BTW, das Einbinden von DateUtils nicht vergessen.
CalendarWeekToDate benötigt meine schon eimal vorgestellte Funktion
FirstDayOfYear, deshalb hier noch einmal.
Delphi-Quellcode:
//Wolfgang Mix - Delphi-Praxis
//Returns Monday before NewYear or NewYear itsself as date
function FirstDayOfYear(year:integer):TDate;
var mydate: TDate;temp:extended;
begin
Mydate:= EncodeDate(year,1,1);
temp:=DayOfTheWeek(mydate);
mydate:= mydate-temp+1;
result:=mydate;
end;
//Wolfgang Mix - Delphi-Praxis
// ----- Needs function FirstDayOfYear -----
//Returns the first day of calendar week as date
function CalendarWeekToDate(cw,year:word): TDate;
var temp1:TDate;
temp2:word;
begin
temp1:=FirstDayOfYear(year);
temp2:=WeekOfTheYear(temp1);
if temp2 = 1 then result:=7*(cw-1)+temp1
else result:=7*cw+temp1;end;
Label1.Caption:=DateToStr(CalendarWeekToDate(31,2009));
//Label1.Caption:=DateToStr(CalendarWeekToDate(31,2010));
//Label1.Caption:=DateToStr(CalendarWeekToDate(31,2011));