Datumsfunktion rückwärts

Mike Rofon

Erfahrenes Mitglied
Es geht um eine bestimmte Datumsfunktion, nämlich date("W", ...), also die Ermittlung der Wochennummer. Dieses ist soweit klar, aber wie geht das rückwärts? Also ich habe die Wochennummer und vielleicht noch das Jahr, und brauche den ersten Tag der Woche (also den Montag) als Datum. Mir ist noch nix eingefallen wie man das zuverlässig macht.

Hat jemand ne Idee?

.
 
Hallo Mike Rofon,

das Script müsste dir weiterhelfen:

PHP:
echo date("M-d-Y",mktime(0,0,0,1,1,2006)+((38-1)*7*24*60*60)+(24*60*60));
Das Beispiel ist für das Jahr 2006 und die
Kalenderwoche 38 also letzten Montag. Die Kalenderwoche - 1
ist der erste Sonntag der Woche, dann schlägst
du einen Tag drauf (24*60*60) und du hast den Montag.
 
Danke an blount,
mit dem Befehl kann man arbeiten , das funktioniert :)

Muß mich korrigieren: Es HAT funktioniert, und zwar für das Jahr 2006. Im neuen Jahr hauts nich mehr hin. Da is dann plötzlich der 9.1.2007 ein Montag, obwohls eigentlich n Dienstag ist.

Mit ein bißchen Basteln hab ich es aber jetzt hinbekommen. Ich stell das ganze Script hier rein, vielleicht braucht das ja mal jemand.
ACHTUNG ADMIN: Ich hab im Augenblick nich die Zeit ein komplettes Tutorial zu schreiben, außerdem is das ja für Euch Profis nix "weltbewegendes", was ich hier gebaut hab.

Also: Das folgende ist eine kleine Demo, wie man nur aus einer gegebenen Wochen-Nummer und dem Jahr ausrechnen kann welches Datum der Montag der jeweiligen Woche hat.
Nicht schön programmiert aber vielleicht doch anschaulich :)
PHP:
    $eintag=86400; //24*60*60
    $tage = array("Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag");
     echo "<table border=1>
    <tr> <td colspan=5>vorgegebene Daten </td>
         <td colspan=4>der zur Woche gehörende Montag </td>
    </tr>";

    for ($jahr=2006;$jahr<=2008;$jahr++) {        // das vorgegebene Jahr
      for($woche=1;$woche<32;$woche++) {          // die vorgegebene Wochennummer
        echo "<tr>";
        $test3 = mktime(0,0,0,1,1,$jahr)+(($woche-1)*7*$eintag);
        $t3 = date("w",$test3); if ($t3==0) $t3=7;
        $test4 = $test3+((8-$t3)*$eintag)-(7*$eintag);
        $t4 = date("w",$test4); if ($t4==0) $t4=7;
        echo "<td>$woche</td>
              <td>".date("d.m.Y",$test3)."</td>
              <td>".date("W",$test3)."</td>
              <td>".$t3."</td>
              <td>".$tage[$t3-1]."</td>
              <td>".date("d.m.Y",$test4)."</td>
              <td>".date("W",$test4)."</td>
              <td>".$t4."</td>
              <td>".$tage[$t4-1]."<br>"
              ;
        echo "</tr>";
        }
      }
    echo "</table>";

Viel Glück beim Ausprobieren!
 
Zuletzt bearbeitet:
Zurück