DateTime добавить 1 день

Моя форма имеет 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 в моем коде в базе данных сохраняется только последний день.

Related of "DateTime добавить 1 день"

вы можете использовать функцию добавления объекта 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