DateTime add 1 Tag

Meinem Formular 2 Felder Time_from und Time_to

Nun muss ich hinzufügen, einen Eintrag in meiner Datenbank für jeden Tag (Wenn es einen Unterschied zwischen jenen Tagen)
ex. Time_from = 2013-08-26 08:00:00 und Time_to = 2013-08-28 16:00:00
Also in meiner Datenbank, ich sollte 3 Einträge

Time_from = 2013-08-26 08:00:00 and Time_to = 2013-08-26 16:00:00
Time_from = 2013-08-27 08:00:00 and Time_to = 2013-08-27 16:00:00
Time_from = 2013-08-28 08:00:00 and Time_to = 2013-08-28 16:00:00

Also für diesen Zweck habe ich eine Methode, wo ich zuerst den Unterschied zwischen den 2 Terminen und dann bin ich mit einer for-Schleife, die ausgeführt wird, wie viele Tage Sie im Unterschied zu diesen 2 Terminen, und am Ende ich bin nur um 1 Tag.

public function createOffer($offer)
{
$time_from = new DateTime($offer->time_from);
$time_to = new DateTime($offer->time_to);
$interval = $time_from->diff($time_to);

for ($counter = 0; $counter <= $interval->d; $counter++) {
    $offer->time_from = $time_from->format('Y-m-d H:i:s');
    $offer_time_to = new DateTime($time_from->format('Y-m-d'));
    $offer_time_to->setTime($time_to->format('H'), $time_to->format('i')
        , $time_to->format('s'));
    $offer->time_to = $offer_time_to->format('Y-m-d H:i:s');

    if ($offer->validate()) {
    $offer->save();
    }

    date_modify($time_from, '+1 day');
    }
}

Für einige Grund, der code funktioniert nicht.

Wenn ich entfernen Sie die date_modify Feld nur der erste Tag wird gespeichert in meine Datenbank (Denke mal die for-Schleife läuft nur einmal dann)

Aber mit der date_modify in meinem code, nur der Letzte Tag in der Datenbank gespeichert wird.

$Intervall->d es gibt keine "Tage" Unterschied, nur Stunden, in der Zeit gegeben, so wird die Schleife nur einmal ausgeführt
Also der Unterschied zwischen den Tagen ist nur gezeigt, dass ich Stunden?
phpfiddle.org/main/code/3r1-6hc sind Sie sicher, dass Sie nicht wollen, $Intervall->h eher als Intervall->d

InformationsquelleAutor CreamYGEEK | 2013-07-31

Schreibe einen Kommentar