Das mit dem Kalender ist nicht so einfach. Den korrekten Monat einer KW zu erhalten ist so eine Sache und wie ihr beschrieben habt eigentlich gar nicht möglich, wenn die KW über zwei Monate geht.
Ich habe hierzu den Kunden noch mal gefragt wie er es denn gerne haben möchte. Wenn ich die Antwort habe, dann gebe ich noch mal über den aktuellen Status Bescheid.
In irgendeinem Excel-Forum oder Blog gabs eine Funktion, die wir umgeschrieben haben.
Delphi-Quellcode:
function GetMonatFromKW(Jahr, KW: String): String;
var
tage: Int16;
Date, Date2: TDate;
wochentag, wochentag2: word;
year, month, day: word;
begin
// Was für ein tag ist der 1.1.xxxx
Date := StrToDate('01.01.' + Jahr);
wochentag := DayOfWeek(Date);
// Was für ein Tag ist der 31.12.xxxx
Date2 := StrToDate('31.12.' + Jahr);
wochentag2 := DayOfWeek(Date2);
// Wenn der erste oder letzte Tag eines Jahres ein Donnerstag ist
// dann hat das Jahr 53 KWs
if (wochentag = 5) OR (wochentag2 = 5) then begin
// Alle außer KW 53 werde ignoriert und normal berechnet
if KW = '53' then begin
Result := '12';
Exit;
end;
end;
// Anzahl der Tage seid Anfang des Jahres
tage := StrToInt(KW) * 7;
tage := tage - ((wochentag));
// Zum Datum hin rechnen
Date := Date + tage;
// Monat auslesen und zurückgeben
DecodeDate(Date, year, month, day);
Result := inttostr(month);
end;
Leider funktioniert diese Berechnung aber auch nicht ganz, ich hätte bei manchen Ergebissen etwas anderes gesagt.
Warten wir mal ab, was der Kunde sagt.