
Zitat von
Spateneder
Hier ein Link zur Verwendung der Datums-APIs in CLLE:
Sample LE/date functions from CLPLE
Vorgehensweise für Dein Problem:
- Wochentag des 1. Januar für das gesuchte Jahr ermitteln
- Datum des ersten Montags im Jahr ermitteln
- 7er-Einmaleins
Man sollte dabei allerdings berücksichtigen, dass der erste Montag im Jahr nicht zwangläufig in der KW 1 liegen muss!
Die ISO Regeln lauten:
Die Woche beginnt mit einem Montag und die Mehrheit der Tage in der 1. Kalenderwoche muss aus dem neuen Jahr sein.
Was man sicher sagen kann ist, dass der erste Donnerstag im Jahr oder der 4. Januar immer in KW1 ist.
Ich hab das Ganze mal als SQL Funktion gemacht. Das könnte man in embedded SQL hinterlegen und dann aus CL aufrufen:
Code:
Create Function MySchema/Tag1KW
(ParYear Decimal(4, 0),
ParWeekIso Decimal(2, 0))
Returns Date
Language SQL
Begin
Declare Jan4 Date;
Set Jan4 = Date(Digits(ParYear) concat '-01-04');
If ParWeekISO <= 0
or ParWeekISO > Week_ISO(Jan4 + 1 Year - 7 Days)
Then Return Date('0001-01-01');
End If;
Return Jan4 + (((ParWeekIso - 1) * 7 + 1) - DayOfWeek_ISO(Jan4)) Days;
End;
Birgitta
Bookmarks