Mach aus dem und ein oder dann stimmts 😉
Ihr Habt beide recht. Ich hab bei Wikipedia zu schnell gelesen. Da steht "oder".
#!/usr/bin/perl -W
use POSIX;
for ( $i=2000; $i<2100; $i++ ) {
print ( $i, " : ", getWeeksOfYear($i), "\n" );
}
exit;
sub getWeekdayFromYMD {
return strftime( '%w', 1, 1, 1, $_[2], $_[1]-1, $_[0]-1900 );
}
sub getWeeksOfYear {
if (
( 4 == getWeekdayFromYMD( $_[0], 1 , 1 ) )
or
( 4 == getWeekdayFromYMD( $_[0], 12, 31 ) )
) {
return 53;
} else {
return 52;
}
}
So. jetzt stimmts.
Wo siehst Du ein Jahr-2000-Problem?
Wenn dauernd etwas wie $_[0]-1900
notwendig wird, dann hat die Sprache einen Knacks. JS ist also auch betroffen. Sowas verleitete vor anno 2k geradezu dazu, mit zweistelligen Jahreszahlen zu rechnen.