Intereting Posts
вычисление строки луча – javascript для php Ошибка при попытке запустить HipHop в «режиме 2 (компиляция HipHop во временном каталоге и запуск скомпилированной программы из командной строки») Извлечь листовые узлы многомерного массива в PHP Когда SIGTERM отправляется, дочерний процесс закрывает соединение mysql? О области и ООП в PHP Время PHP () возвращает отметку времени GMT / UTC? curl errno 35 (Неизвестная ошибка протокола SSL в : 443) Класс вызова PHP в классе возвращает ошибку: 500 Использование метода array_push в методе php Защита форм регистрации и комментариев от CSRF Как отправить изображение, аудио или видео через API WhatsApp – PHP Единичное тестирование json-кодирования / декодирования на ошибки Предупреждение: spl_object_hash () ожидает, что параметр 1 будет объектом, с сообщением Как проверить, пусто ли значение массива? Как использовать сеанс в wordpress при разработке плагинов

Добавление дней к $ Date в PHP

У меня есть дата, возвращаемая как часть запроса mySQL в форме 2010-09-17

Я хотел бы установить переменные $ Date2 в $ Date5 следующим образом:

$Date2 = $Date + 1

$Date3 = $Date + 2

и т.д..

так что он возвращает 2010-09-18 , 2010-09-19 т. д. …

я пытался

 date('Ym-d', strtotime($Date. ' + 1 day')) 

но это дает мне дату ДО $Date .

Каков правильный способ получить мои Даты в форме формы «Ymd», чтобы они могли использоваться в другом запросе?

Все, что вам нужно сделать, это использовать days вместо day :

 <?php $Date = "2010-09-17"; echo date('Ym-d', strtotime($Date. ' + 1 days')); echo date('Ym-d', strtotime($Date. ' + 2 days')); ?> 

И он выводится правильно:

 2010-09-18 2010-09-19 

Если вы используете PHP 5.3, вы можете использовать объект DateTime и его метод add :

 $Date1 = '2010-09-17'; $date = new DateTime($Date1); $date->add(new DateInterval('P1D')); // P1D means a period of 1 day $Date2 = $date->format('Ym-d'); 

Взгляните на DateInterval руководства конструктора DateInterval чтобы узнать, как создавать другие периоды для добавления к вашей дате (2 дня будут 'P2D' , 3 – 'P3D' и т. Д.).

Без PHP 5.3 вы должны иметь возможность использовать strtotime так, как вы это делали (я тестировал его, и он работает как в версиях 5.1.6, так и в 5.2.10):

 $Date1 = '2010-09-17'; $Date2 = date('Ym-d', strtotime($Date1 . " + 1 day")); // var_dump($Date2) returns "2010-09-18" 

Вот небольшой фрагмент, демонстрирующий модификацию даты:

 $date = date("Ymd"); //increment 2 days $mod_date = strtotime($date."+ 2 days"); echo date("Ymd",$mod_date) . "\n"; //decrement 2 days $mod_date = strtotime($date."- 2 days"); echo date("Ymd",$mod_date) . "\n"; //increment 1 month $mod_date = strtotime($date."+ 1 months"); echo date("Ymd",$mod_date) . "\n"; //increment 1 year $mod_date = strtotime($date."+ 1 years"); echo date("Ymd",$mod_date) . "\n"; 

Из PHP 5.2 вы можете использовать модификацию с объектом DateTime:

http://php.net/manual/en/datetime.modify.php

 $Date1 = '2010-09-17'; $date = new DateTime($Date1); $date->modify('+1 day'); $Date2 = $date->format('Ym-d'); 

Будьте осторожны при добавлении месяцев … (и в меньшей степени, лет)

Вы также можете использовать следующий формат

 strtotime("-3 days", time()); strtotime("+1 day", strtotime($date)); 

Вы можете складывать изменения таким образом:

 strtotime("+1 day", strtotime("+1 year", strtotime($date))); 

Обратите внимание на разницу между этим подходом и тем, что содержится в других ответах: вместо конкатенации значений +1 day и <timestamp> вы можете просто передать метку времени как второй параметр strtotime .

Использование переменной для количества дней

 $myDate = "2014-01-16"; $nDays = 16; $newDate = strtotime($myDate . '+ '.$nDays.'days'); echo newDate('d/m/Y', $soma); //format new date 

Здесь есть простой способ решить эту проблему.

 <?php $date = "2015-11-17"; echo date('Ym-d', strtotime($date. ' + 5 days')); ?> 

Выход будет:

 2015-11-22 

Решение найдено здесь – Как добавить дни в PHP

Вот простейшее решение вашего запроса

 $date=date_create("2013-03-15");\\or your date string date_add($date,date_interval_create_from_date_string("40 days"));\\add number of days echo date_format($date,"Ymd");\\set date format of the result 

Все должны использовать следующий код:

 $nday = time() + ( 24 * 60 * 60); echo 'Now: '. date('Ym-d') ."\n"; echo 'Next Day: '. date('Ym-d', $nday) ."\n";