Zeitraum in einzelne Tage aufteilen

Ich übergebe einer Funktion ein Datum.
Sie soll alle Tage auf Feiertage und Samstag/Sonntag überprüfen.
Funktioniert.

Nun wollte ich aber einen Zeitraum übergeben. Dazu muss ich den Zeitraum in einzelne Tage aufteilen. Nur wie mache ich das am besten?
 
Teste mal diesen Schnipsel:
PHP:
<pre>
<?php
$datum_anfang = strtotime( '2008-06-10 09:15:00' ); //Zeitstempel
$datum_ende = strtotime( '2008-06-13 09:15:00' ); //Zeitstempel

$datum = array(); //array
$datum[] = date( 'Y-m-d H:i:s', $datum_anfang ); //anfangsatum in array schreiben
for( $i = 1; $i < ( $datum_ende - $datum_anfang ) / 86400; $i++ ) //anzahl der tage im zeitraum durchlaufen
{
    $datum[] = date( 'Y-m-d H:i:s', strtotime("+$i Days", $datum_anfang) ); //daten in array schreiben
}
$datum[] = date( 'Y-m-d H:i:s',  $datum_ende );//enddatum in array schreiben

echo var_dump( $datum );
?>
</pre>
//edit: Getestet, var_dump:
Code:
array(4) {
  [0]=>
  string(19) "2008-06-10 09:15:00"
  [1]=>
  string(19) "2008-06-11 09:15:00"
  [2]=>
  string(19) "2008-06-12 09:15:00"
  [3]=>
  string(19) "2008-06-13 09:15:00"
}

//edit:2 für das Anfangs und Enddatum gibt es sicher eine schönere Lösung, diese in das array zu schreiben. Ist mir aber auf die schnelle nicht eingefallen :p

//edit3: Habs mal etwas überarbeitet :)
PHP:
for( $i = 0; $i < ( $datum_ende - $datum_anfang ) / 86400+1; $i++ ) //anzahl der tage im zeitraum durchlaufen
{
    $datum[] = date( 'Y-m-d H:i:s', strtotime("+$i Days", $datum_anfang) ); //daten in array schreiben
}
 
Zuletzt bearbeitet:
hmm irgendwie gibts manchmal fehler
da nimmt er einfach nen tag mehr als er eigentlich dürfte
kann aber nicht sagen wann genau das auftritt

habs jetzt mal so umgeschrieben und es gibt bisher keine fehler:
PHP:
for( $i = 0; $i <= ( $datum_ende - $datum_anfang ) / 86400; $i++ ) //anzahl der tage im zeitraum durchlaufen
{....}

weißt du woher der fehler kommen könnte?
 
Kannst du einen Zeitraum als Beispiel posten, indem was falsch läuft? Ich kann keinen Fehler erkennen, auch nach nochmaligem testen nicht.
 
Zurück