($fst, $fst+1, $fst+2, $fst+3, $fst+4, $fst+5, $fst+6);
Da hat $fst+4 gefehlt
Ich habe mal vor fernen Tagen gehört, dass man auch deshalb sowas in for-Schleifen verbaut...
Ja 😉 Genau das war ja mein Fehler 😉
Der Algorithmus zur Berechnung der Kalenderwoche nach DIN1355 ist übrigens ganz einfach. Man braucht den $jd (Julianischer Tag) und den $wd (numerischer Wochentag) zum 1.1. eines Jahres.
Die Rechnung ist dann wie folgt:
# map(wd)
my %swd = (
0 => 1,
1 => 0,
2 => -1,
3 => -2,
4 => -3,
5 => 3,
6 => 2,
7 => 1,
);
return ($jd + $swd{$wd});
Der Return ist also der Julianische Tag für den Montag der 1. Kalenderwoche eines Jahres die auch mal in das vorherige Jahr fallen kann. Mit diesem Tag kann man alles Weitere berechnen. So einfach sieht also DIN1355 (ISO/R 2015-1971) (deutsch) in Perl aus 😉
MfG