MudGuard: Rechnen mit Datum / Brett vorm Kopf

Beitrag lesen

Hi,

$myStart = 1519095600; 
$myEnd = 1521413999; // sind 4 Wochen in Sekunden von Mo1, 00:00:00 bis So4, 23:59:59

nö, sind es nicht. Die Differenz ist 2318399 (ich hau mal noch 1 drauf, als 2318400): 2318400 / 3600 ergibt 644 Stunden, / 24 ergibt 26,83333 Tage. 4 Wochen wären aber 28 Tage +/- 1 Stunde (Ende März/Ende Oktober weicht's ja etwas ab).


> $myJahr = date('Y',$myStart);
> $myKW = date('W',$myEnd);

Das Jahr vom Start, die Woche vom Ende? Das geht spätestens dann schief, wenn Start und Ende in verschiedenen Jahren liegen …


> $arr_alleWochen[] = $myKW."_".$myJahr;     // 1.Eintrag
> $myZeiger = $myStart;

$myZeiger ist jetzt ein Unix-Timestamp.


> while ($myZeiger <= $myEnd) {
> $myZeiger = $myJahr."W".$myKW;      // Montag dieser Woche

jetzt ist $myZeiger ein String 2018W11. Warum Du das mit "Montag dieser Woche" kommentierst, erschließt sich mir nicht.


> $next_week = date('W', strtotime($myZeiger." +1 week"))."_".date('Y', strtotime($myZeiger." +1 week +3day"));

Hier wird der Jahreswechsel berücksichtigt (+3day), bei Jahreswechsel zwischen $myStart und $myEnd ist aber schon der erste Eintrag falsch.


> $arr_alleWochen[] = $next_week;            // alle weiteren KWs
> $myZeiger = strtotime($myZeiger." +1 week");

Oh, $myZeiger wird jetzt wieder ein Unix-Timestamp. Sehr verwirrend, der ständige Bedeutungswechsel von $myZeiger. Geht Dir das nicht auf den Zeiger? 😉

Ach ja, Einrückungen würden den Code besser lesbar machen.

cu,
Andreas a/k/a MudGuard