Добавить количество дней до даты - PullRequest
112 голосов
/ 25 февраля 2010

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

$i=30;
echo $date = strtotime(date("Y-m-d", strtotime($date)) . " +".$i."days");

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

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

Ответы [ 19 ]

235 голосов
/ 25 февраля 2010

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

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

strtotime

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

пока date

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

См. Справочные страницы для

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

60 голосов
/ 11 мая 2011

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

function addDayswithdate($date,$days){

    $date = strtotime("+".$days." days", strtotime($date));
    return  date("Y-m-d", $date);

}
46 голосов
/ 13 марта 2011
$date = new DateTime();
$date->modify('+1 week');
print $date->format('Y-m-d H:i:s');

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

9 голосов
/ 17 ноября 2013
$today=date('d-m-Y');
$next_date= date('d-m-Y', strtotime($today. ' + 90 days'));
echo $next_date;
9 голосов
/ 15 июня 2015

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

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

$today = "2015-06-15"; // Or can put $today = date ("Y-m-d");

$fiveDays = date ("Y-m-d", strtotime ($today ."+5 days"));

echo $fiveDays; // Will output 2015-06-20
7 голосов
/ 25 февраля 2010

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

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

7 голосов
/ 25 февраля 2010

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

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

function add_days($date, $days) {
    $timeStamp = strtotime(date('Y-m-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;
}
6 голосов
/ 13 марта 2011

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

6 голосов
/ 13 марта 2011

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

$ data ['create'] = дата ('Y-m-d H: i: s', strtotime ("+ 1 неделя"));

6 голосов
/ 08 мая 2013

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

$date = '05/07/2013';
$add_days = 7;
$date = date('Y-m-d',strtotime($date) + (24*3600*$add_days)); //my preferred method
//or
$date = date('Y-m-d',strtotime($date.' +'.$add_days.' days');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...