Wie kann ich elegant bzw. überhaupt die Anzahl der Wochen eines Jahres ermitteln?
Mit anderen Worten, ich will mir eine Funktion
numberOfWeeks($year)
implementieren, so dass z.b.
numberOfWeeks(2010)==52
und
numberOfWeeks(2009)==53.
Das ist aber jetzt vielleicht interessant zu wissen, denn da gibt es vermutlich einen Bug in PHP?
Zuerst hatte ich mir schon implementiert:
function numberOfWeeks($year) {
$firstDay = date ( "N", mktime(0,0,0,1,1,$year) );
$lastDay = date ( "N", mktime(0,0,0,12,31,$year) );
if ( $firstDay == 4 || $lastDay == 4 )
return 53;
else
return 52;
}
Nach dem Tip vom Bademeister habe ich mir das verkuerzt zu
function numberOfWeeks($year) {
return date ("W", mktime(0,0,0,12,28,$year));
}
Die erste Version scheint korrekt zu arbeiten, aber in der zweiten Version gibt es fuer $year > 2038 immer nur das Ergebnis '01' anstatt '52' oder '53'.
Dies passier jedenfalls in meinem PHP 5.2.6-2ubuntu4.6 und PHP 5.3.2 (cli).