Добавление одного дня к дате
мой код для добавления одного дня к дате возвращает дату перед добавлением дня:
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('Y-m-d H:i:s', strtotime("2009-09-30 20:24:00"));
echo 'date before day adding: '.$stop_date;
$stop_date = date('Y-m-d H:i:s', strtotime('+1 day', $stop_date));
echo ' date after adding one day. SHOULD be rolled over to the next month: '.$stop_date;
?>
я использовал довольно похожий код раньше, что я делаю неправильно здесь?
10 ответов:
<?php $stop_date = '2009-09-30 20:24:00'; echo 'date before day adding: ' . $stop_date; $stop_date = date('Y-m-d 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('Y-m-d H:i:s'); $stop_date->modify('+1 day'); echo 'date after adding 1 day: ' . $stop_date->format('Y-m-d H:i:s');
это сработало для меня: На Текущую Дату
$date = date('Y-m-d', strtotime("+1 day"));для anydate:
date('Y-m-d', strtotime("+1 day", strtotime($date)));
попробуй такое
echo date('Y-m-d 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("Y-m-d", $time_add); echo $new_date;
Я всегда просто добавляю 86400 (секунд в день):
$stop_date = date('Y-m-d H:i:s', strtotime("2009-09-30 20:24:00") + 86400); echo 'date after adding 1 day: '.$stop_date;это не самый гладкий способ, которым вы могли бы это сделать, но он работает!
хотя я согласен с ответом Дуга Хейса, я позвоню сюда, чтобы сказать, что причина, по которой ваш код не работает, заключается в том, что strtotime () ожидает INT в качестве 2-го аргумента, а не строки (даже той, которая представляет дату)
Если вы включите Max error reporting, вы увидите это как ошибку "a non well formed numeric value", которая является уровнем E_NOTICE.
The
modify()метод, который может быть использован для добавления приращения к существующейDateTimeзначение.создать новый
DateTimeобъект с текущей датой и временем:$due_dt = new DateTime();после
DateTimeобъект, вы можете управлять его значением, добавляя или вычитая периоды времени:$due_dt->modify('+1 day');вы можете прочитать больше о руководство PHP.
следующий код получает первый день января текущего года (но это может быть другая дата) и добавляет 365 дней к этому дню (но это может быть N дней), используя класс DateTime и его метод modify () и format ():
echo (new DateTime((new DateTime())->modify('first day of January this year')->format('Y-m-d')))->modify('+365 days')->format('Y-m-d');
Comments