Christoph: Kalenderwochen mit Datum ausgeben... Abfragefehler!

Beitrag lesen

Hallo zusammen,

ich habe folgende Function, die nichts anderes macht als Anhand des aktuellen Datums den Monat auszulesen und die entsprechenden Kalenderwochen inkl. dem Datumszeitraum auzugeben.

Soweit funktioniert das Ganze auch, jedoch wird die zweite KW eines Jahres doppelt angezeigt und somit im Januar eine KW zu wenig. Sobald man das Datum auf z.B. Februar stellt, funktioniert die Ausgabe genau richtig. Ich habe dir Befürchtung das es irgendwie an der ersten Abfrage liegt, die automatisch feststeht.

Würde mich freuen wenn ihr die entsprechende Funktion mal überfliegen könntet und mir Hinweise zukommen lasst, wo der Fehler in dem Ganzen liegt.

Danke und Gruß
der Christoph

======= KW Function ======================

<?php
  $getdate = '20080124';

// Calendarweeks
  function firstkw($year) {
      $erster = mktime(0,0,0,1,1,$year);
      $wtag = date('w',$erster);

if ($wtag <= 4) {
          $montag = mktime(0,0,0,1,1-($wtag-1),$year);
      } else {
          $montag = mktime(0,0,0,1,1+(7-$wtag+1),$year);
      }

return $montag;
  }

function mondaykw($kw,$year) {
      $firstmonday = firstkw($year);
      $mon_monat = date('m',$firstmonday);
      $mon_jahr = date('Y',$firstmonday);
      $mon_tage = date('d',$firstmonday);

$tage = ($kw-1)*7;
      $mondaykw = mktime(0,0,0,$mon_monat,$mon_tage+$tage,$mon_jahr);

return $mondaykw;
  }

function calendarweeks($calendarweek) {
      $timestamp= $calendarweek;
   $kw= date(W,$timestamp);
   $year = date(Y,$timestamp);

return 'W '.$kw.'<br/>'.date("d.m.y",mondaykw($kw,$year)).' - '.date("d.m.y",strtotime("+6 day", mondaykw($kw,$year)));
  }

$fake_cal_month1  = substr_replace($getdate,"",0,4);

$fake_cal_month  = substr_replace($fake_cal_month1,"",2,2);

$fake_cal_year  = substr_replace($getdate,"",4);
  $first_of_month1  = $fake_cal_year.$fake_cal_month.'01';
  $first_of_month  = strtotime($first_of_month1);

$calendarweeks  = mktime(0,0,0,$fake_cal_month,1,$fake_cal_year);

$count_calweeks  = date('t', $first_of_month);

for ($i=0; $i<ceil($count_calweeks / 7); $i++) {
   $calendarmonth_array[] = $calendarweeks;

$calendarweeks = strtotime("+6 day", $calendarweeks);
  }

$monthdisplay = '';

for ($x=0; $x<count($calendarmonth_array); $x++) {
    $calendarweek = $calendarmonth_array[$x];

$monthdisplay .= calendarweeks($calendarweek).'<br><br>'."\n";
  }

echo $monthdisplay;
?>