noknok: Wochen eines Jahres

Beitrag lesen

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).