Моя форма имеет 2 поля – Time_from и Time_to
Теперь мне нужно добавить запись в моей базе данных за каждый день (если theres – разница между этими днями) ex. Time_from = 2013-08-26 08:00:00 и Time_to = 2013-08-28 16:00:00 Так что в моей базе данных я должен получить 3 записи
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
Поэтому для этой цели я сделал метод, в котором я сначала обнаружил разницу между этими двумя датами, а затем я использую цикл for, который будет работать столько дней в разнице, что и у двух дат, и в конце я просто добавляю 1 день.
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('Ymd H:i:s'); $offer_time_to = new DateTime($time_from->format('Ym-d')); $offer_time_to->setTime($time_to->format('H'), $time_to->format('i') , $time_to->format('s')); $offer->time_to = $offer_time_to->format('Ymd H:i:s'); if ($offer->validate()) { $offer->save(); } date_modify($time_from, '+1 day'); } }
По какой-то причине код не работает.
Когда я удаляю поле date_modify, только первый день будет сохранен в моей базе данных (предположим, цикл for работает только один раз)
Но с date_modify в моем коде в базе данных сохраняется только последний день.
вы можете использовать функцию добавления объекта Datatime
здесь я даю вам один пример, чтобы добавить 1 в вашу дату публикации, например
<?php $date = new DateTime('2000-01-01'); $date->add(new DateInterval('P1D')); echo $date->format('Ym-d') . "\n"; ?>
ВЫВОД
2000-01-02
Надеюсь, он поможет вам решить вашу проблему.
$date = new DateTime('2017-01-17'); $date->modify('+1 day'); echo $date->format('Ym-d'); // 2017-01-18
Вы тоже можете это сделать:
$dateTo = new \DateTime('1980-12-07 +1 day'); echo $dateTo->format('Ym-d'); // 1980-12-08