# map(wd) my %swd = ( 0 => 1, 1 => 0, 2 => -1, 3 => -2, 4 => -3, 5 => 3, 6 => 2, 7 => 1, ); return ($jd + $swd{$wd});
So einfach sieht also DIN1355 (ISO/R 2015-1971) (deutsch) in Perl aus 😉
Naja. Wenn es um "einfach" geht, dann würde ich
my @swd = ( 1, 0, -1, -2, -3, 3, 2, 1 ); return $jd + $swd[$wd]
vorziehen.
Ja sicher kann man hier auch den unsichtbaren Index eines Arrays verwenden, wenn der Schlüssel eben numerisch ist. I.d.R. jedoch bevorzuge ich eine namentliche Adressierung weil das besser lesbar ist. Und äquivalent zu:
# Fall Wochentag 1.1.
my %cwd = (
Montag => 0,
Dienstag => -1,
Mittwoch => -2,
Donnerstag => -3,
Freitag => 3,
Samstag => 2,
Sonntag => 1
);
Damit man das auch nach Jahren nachvollziehen kann 😉
Dieser quasi Switch implementiert aber nur eine der in DIN1355 gefassten Bedingungen, den Beginn der Wochenzählung. Die zweite Bedingung, nämlich wieviele KWs ein Jahr hat, ist nicht minder wichtig. MfG
PS: Wenn man sieht was manchmal an entsetzlich wenig Code nach tagelanger Überlegung rauskommt, kann man echte Zweifel am Stundensatz bekommen 😉