Добавить количество дней до даты

Я хочу добавить количество дней к текущей дате: я использую следующий код:

$i=30; echo $date = strtotime(date("Ymd", strtotime($date)) . " +".$i."days"); 

Но вместо получения правильной даты я получаю следующее: 2592000

Пожалуйста, предложите.

Это должно быть

 echo date('Ym-d', strtotime("+30 days")); 

strtotime

ожидает, что будет предоставлена ​​строка, содержащая формат даты на английском языке в США, и попытается проанализировать этот формат в временную метку Unix (количество секунд с 1 января 1970 года 00:00:00 по UTC) по сравнению с меткой времени, указанной в настоящее время, или текущее время, если теперь не предоставляется.

а date

Возвращает строку, отформатированную в соответствии с заданной строкой формата, используя заданную метку времени или текущее время, если не указана метка времени.

См. Страницы руководства для

и их сигнатуры функций.

Это может быть хорошо

 function addDayswithdate($date,$days){ $date = strtotime("+".$days." days", strtotime($date)); return date("Ymd", $date); } 
 $date = new DateTime(); $date->modify('+1 week'); print $date->format('Ymd H:i:s'); 

или print date('Ymd H:i:s', mktime(date("H"), date("i"), date("s"), date("m"), date("d") + 7, date("Y"));

 $today=date('dm-Y'); $next_date= date('dm-Y', strtotime($today. ' + 90 days')); echo $next_date; 

Имейте в виду, изменение часов меняется из-за летнего времени может дать вам некоторые проблемы, когда только расчет дней.

Вот небольшая функция php, которая позаботится об этом:

 function add_days($date, $days) { $timeStamp = strtotime(date('Ym-d',$date)); $timeStamp+= 24 * 60 * 60 * $days; // ...clock change.... if (date("I",$timeStamp) != date("I",$date)) { if (date("I",$date)=="1") { // summer to winter, add an hour $timeStamp+= 60 * 60; } else { // summer to winter, deduct an hour $timeStamp-= 60 * 60; } // if } // if $cur_dat = mktime(0, 0, 0, date("n", $timeStamp), date("j", $timeStamp), date("Y", $timeStamp) ); return $cur_dat; } 

Вы также можете попробовать:

$date->modify("+30 days");

Вы можете сделать это, манипулируя временным кодом или используя strtotime () . Вот пример использования strtotime.

$ data ['created'] = date ('Ymd H: i: s', strtotime ("+ 1 неделя"));

Вы можете использовать strtotime ()
$data['created'] = date('Ymd H:m:s', strtotime('+1 week'));

Я знаю, что это старый вопрос, но для PHP <5.3 вы можете попробовать это:

 $date = '05/07/2013'; $add_days = 7; $date = date('Ym-d',strtotime($date) + (24*3600*$add_days)); //my preferred method //or $date = date('Ym-d',strtotime($date.' +'.$add_days.' days'); 

Вы также можете добавить это, если хотите дату 5 дней с определенной даты:

У вас есть переменная с такой датой (полученная от ввода или БД или просто жестко закодированная):

 $today = "2015-06-15"; // Or can put $today = date ("Ymd"); $fiveDays = date ("Ymd", strtotime ($today ."+5 days")); echo $fiveDays; // Will output 2015-06-20 

Вы можете использовать класс DateTime, встроенный в PHP. У него есть метод под названием «добавить», и его использование полностью продемонстрировано в руководстве: http://www.php.net/manual/en/datetime.add.php

Однако он требует PHP 5.3.0.

 $date = "04/28/2013 07:30:00"; $dates = explode(" ",$date); $date = strtotime($dates[0]); $date = strtotime("+6 days", $date); echo date('m/d/Y', $date)." ".$dates[1]; 

Вы можете попробовать это.

 $i=30; echo date("Ymd",mktime(0,0,0,date('m'),date('d')+$i,date('Y'))); 

Простой и лучший

 echo date('Ymd H:i:s')."\n"; echo "<br>"; echo date('Ymd H:i:s', mktime(date('H'),date('i'),date('s'), date('m'),date('d')+30,date('Y')))."\n"; 

Попробуй это

 //add the two day $date = "**2-4-2016**"; //stored into date to variable echo date("dmY",strtotime($date.**' +2 days'**)); //print output **4-4-2016** 

Используйте эту функцию addDate () для добавления или вычитания дней, месяцев или лет (вам также понадобится функция auxiliar reformatDate ())

 /** * $date self explanatory * $diff the difference to add or subtract: eg '2 days' or '-1 month' * $format the format for $date **/ function addDate($date = '', $diff = '', $format = "d/m/Y") { if (empty($date) || empty($diff)) return false; $formatedDate = reformatDate($date, $format, $to_format = 'Ymd H:i:s'); $newdate = strtotime($diff, strtotime($formatedDate)); return date($format, $newdate); } //Aux function function reformatDate($date, $from_format = 'd/m/Y', $to_format = 'Ym-d') { $date_aux = date_create_from_format($from_format, $date); return date_format($date_aux,$to_format); } 

Примечание: только для php> = 5.3

Используйте следующий код.

 <?php echo date('Ym-d', strtotime(' + 5 days')); ?> 

Справочник найден здесь – Как добавить дни до текущей даты в PHP

 //Set time zone date_default_timezone_set("asia/kolkata"); $pastdate='2016-07-20'; $addYear=1; $addMonth=3; $addWeek=2; $addDays=5; $newdate=date('Ym-d', strtotime($pastdate.' +'.$addYear.' years +'.$addMonth. ' months +'.$addWeek.' weeks +'.$addDays.' days')); echo $newdate; 

Несмотря на то, что это старый вопрос, этот способ выполнения этого требует многих ситуаций и, кажется, является надежным. Вы должны иметь PHP 5.3.0 или выше.

 $EndDateTime = DateTime::createFromFormat('d/m/Y', "16/07/2017"); $EndDateTime->modify('+6 days'); echo $EndDateTime->format('d/m/Y'); 

Вы можете иметь любой тип формата для строки даты, и это сработает.