Добавление одного дня к дате

Мой код для добавления одного дня к дате возвращает дату до дня добавления: 2009-09-30 20:24:00 дата после добавления одного дня ДОЛЖНА перевернуться до следующего месяца: 1970-01-01 17:33:29

 <?php //add day to date test for month roll over $stop_date = date('Ymd H:i:s', strtotime("2009-09-30 20:24:00")); echo 'date before day adding: '.$stop_date; $stop_date = date('Ymd H:i:s', strtotime('+1 day', $stop_date)); echo ' date after adding one day. SHOULD be rolled over to the next month: '.$stop_date; ?> 

Раньше я использовал довольно похожий код, что я делаю неправильно здесь?

 <?php $stop_date = '2009-09-30 20:24:00'; echo 'date before day adding: ' . $stop_date; $stop_date = date('Ymd H:i:s', strtotime($stop_date . ' +1 day')); echo 'date after adding 1 day: ' . $stop_date; ?> 

Для PHP 5.2.0+ вы также можете сделать следующее:

 $stop_date = new DateTime('2009-09-30 20:24:00'); echo 'date before day adding: ' . $stop_date->format('Ymd H:i:s'); $stop_date->modify('+1 day'); echo 'date after adding 1 day: ' . $stop_date->format('Ymd H:i:s'); 
 $date = new DateTime('2000-12-31'); $date->modify('+1 day'); echo $date->format('Ym-d') . "\n"; 

Самое простое решение:

 $date = new DateTime('+1 day'); echo $date->format('Ymd H:i:s'); 

Попробуй это

 echo date('Ymd H:i:s',date(strtotime("+1 day", strtotime("2009-09-30 20:24:00")))); 

Простота чтения и понимания:

 $original_date = "2009-09-29"; $time_original = strtotime($original_date); $time_add = $time_original + (3600*24); //add seconds of one day $new_date = date("Ymd", $time_add); echo $new_date; 

Я всегда добавляю 86400 (секунды в день):

 $stop_date = date('Ymd H:i:s', strtotime("2009-09-30 20:24:00") + 86400); echo 'date after adding 1 day: '.$stop_date; 

Это не самый лёгкий способ сделать это, но он работает!

Это работало для меня:

 $date = date('Ym-d', strtotime("+1 day")); 

Хотя я согласен с ответом Дага Хейса, я буду звонить здесь, чтобы сказать, что причина, по которой ваш код не работает, заключается в том, что strtotime () ожидает, что INT является вторым аргументом, а не строкой (даже той, которая представляет дату)

Если вы включите максимальную отчетность об ошибках, вы увидите это как ошибку «Не правильно сформированное числовое значение», которая является уровнем E_NOTICE.

Следующий код получает первый день января текущего года (но может быть другой датой) и добавляет 365 дней к этому дню (но это может быть N дней) с использованием класса DateTime и его метода modify () и format () ):

 echo (new DateTime((new DateTime())->modify('first day of January this year')->format('Ym-d')))->modify('+365 days')->format('Ym-d'); 

Метод modify() который можно использовать для добавления приращений к существующему значению DateTime .

Создайте новый объект DateTime с текущей датой и временем:

 $due_dt = new DateTime(); 

Когда у вас есть объект DateTime , вы можете манипулировать его значением, добавляя или вычитая периоды времени:

 $due_dt->modify('+1 day'); 

Вы можете прочитать больше в Руководстве по PHP .