Самый простой способ увеличить дату в PHP? - PullRequest
37 голосов
/ 19 марта 2009

Скажем, у меня есть входящая строка, "2007-02-28", какой самый простой код, который я мог бы написать, чтобы превратить это в "2007-03-01"? Сейчас я просто использую strtotime(), затем добавляю 24*60*60, затем использую date(), но просто задаюсь вопросом, есть ли более чистый, простой или более умный способ сделать это.

Ответы [ 8 ]

78 голосов
/ 19 марта 2009

Чистый способ - это для использования strtotime()

$date = strtotime("+1 day", strtotime("2007-02-28"));
echo date("Y-m-d", $date);

Даст вам 2007-03-01

31 голосов
/ 19 марта 2009

Чище и проще добавить 86400.:)

Высокотехнологичный способ:

$date = new DateTime($input_date);
$date->modify('+1 day');
echo $date->format('Y-m-d');

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

17 голосов
/ 19 марта 2009

Вы можете сделать сложение прямо в strtotime, например,

 $today="2007-02-28";
 $nextday=strftime("%Y-%m-%d", strtotime("$today +1 day"));
6 голосов
/ 19 марта 2009

Другой способ - использовать функцию mktime (). Это очень полезная функция ...

$date = "2007-02-28";
list($y,$m,$d)=explode('-',$date);
$date2 = Date("Y-m-d", mktime(0,0,0,$m,$d+1,$y));

но я думаю strtotime() лучше в этой ситуации ...

5 голосов
/ 18 января 2015

Самый простой способ ...

echo date('Y-m-d',strtotime("+1 day"));    //from today

ИЛИ с указанной даты ...

echo date('Y-m-d',strtotime("+1 day", strtotime('2007-02-28')));
0 голосов
/ 20 октября 2017
$your_date = strtotime("1month", strtotime(date("Y-m-d")));
 $new_date = date("Y-m-d", $your_date++);
0 голосов
/ 19 июля 2017

Здравствуйте, вы можете попробовать это ниже, особенно если вы француз

$date = date('l j F Y');
#increment the date
$date2 = date('l j F Y', strtotime("+7 day"));

для перевода на французский язык вы можете использовать функцию setlocale () или функцию ниже:

function fr_date($date){

    $date = explode(' ', $date);

    $date = str_replace('Monday','Lundi',$date);
    $date = str_replace('Tuesday','Mardi',$date);
    $date = str_replace('Wednesday','Mercredi',$date);
    $date = str_replace('Thursday','Jeudi',$date);
    $date = str_replace('Friday','Vendredi',$date);
    $date = str_replace('Saturday','Samedi',$date);
    $date = str_replace('Sunday','Dimanche',$date);

    $date = str_replace('January','Janvier',$date);
    $date = str_replace('February','Février',$date);
    $date = str_replace('March','Mars',$date);
    $date = str_replace('April','Avril',$date);
    $date = str_replace('May','Mai',$date);
    $date = str_replace('June','Juin',$date);
    $date = str_replace('July','Juillet',$date);
    $date = str_replace('August','Août',$date);
    $date = str_replace('September','Septembre',$date);
    $date = str_replace('October','Octobre',$date);
    $date = str_replace('November','Novembre',$date);
    $date = str_replace('December','Décembre',$date);

    $date = implode(' ',$date);
    return $date;

}
0 голосов
/ 04 сентября 2016
 $early_start_date = date2sql($_POST['early_leave_date']);


        $date = new DateTime($early_start_date);
        $date->modify('+1 day');


        $date_a = new DateTime($early_start_date . ' ' . $_POST['start_hr'] . ':' . $_POST['start_mm']);
        $date_b = new DateTime($date->format('Y-m-d') . ' ' . $_POST['end_hr'] . ':' . $_POST['end_mm']);

        $interval = date_diff($date_a, $date_b);
...