在PHP中增加日期的最简单方法?

在PHP中增加日期的最简单方法?,php,datetime,date,strtotime,date-manipulation,Php,Datetime,Date,Strtotime,Date Manipulation,假设我输入了一个字符串,“2007-02-28”,我能写的最简单的代码是什么来将其转换成“2007-03-01”?现在我只是在使用strotime(),然后添加24*60*60,然后使用date(),但只是想知道是否有更干净、更简单或更聪明的方法来做这件事。添加86400更干净、更简单。:) 高科技的方法是: $date = new DateTime($input_date); $date->modify('+1 day'); echo $date->format('Y-m-d');

假设我输入了一个字符串,
“2007-02-28”
,我能写的最简单的代码是什么来将其转换成
“2007-03-01”
?现在我只是在使用
strotime()
,然后添加
24*60*60
,然后使用
date()
,但只是想知道是否有更干净、更简单或更聪明的方法来做这件事。

添加86400更干净、更简单。:)

高科技的方法是:

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

但是,如果你在某个日期进行一系列转换,而不是仅仅寻找明天,那么这才真正有价值。

一个干净的方法是使用
strotime()


将为您提供2007-03-01

您可以在标准时间内进行添加,例如

 $today="2007-02-28";
 $nextday=strftime("%Y-%m-%d", strtotime("$today +1 day"));

另一种方法是使用函数mktime()。这是非常有用的功能

$date = "2007-02-28";
list($y,$m,$d)=explode('-',$date);
$date2 = Date("Y-m-d", mktime(0,0,0,$m,$d+1,$y));
但是我认为在那种情况下,strotime()更好。

最简单的方法

echo date('Y-m-d',strtotime("+1 day"));    //from today
或从指定日期开始

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

你好,你可以试试下面这个,特别是如果你是法国人

$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;

}
对日期格式使用
strotime()

echo date('Y-m-d', strtotime('2007-02-28' . ' +1 day'));

愚蠢的CentOS只有PHP5.1,DateTime在5.2中引入。我想我最终必须升级到一个非官方的centos php软件包。呃,不。仅仅添加86400是错误的简单。你能解释一下你的意思吗?@chaos:如果你的最小工作时间单位是一天,那么你通常可以通过添加或删除86400的单位来解决问题。如果较小,则需要注意夏令时和时区。在这种情况下,请使用内置函数。他们会比你做得更正确。不是所有的日子都有86400秒长(闰秒)。哦,太好了。我不知道。这几乎就像是一个很好的老日期::Manip.nice,我没有意识到mktime()会像这样增加月份,当你过去的时候/(“1个月”)=会逐月增加//(“1day”)=将按天递增//(日期(“Y-m-d”)=当前日期的开始递增日期。您应该编辑答案,以包含代码的解释,而不是在注释中包含解释。
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;

}
$your_date = strtotime("1month", strtotime(date("Y-m-d")));
 $new_date = date("Y-m-d", $your_date++);
echo date('Y-m-d', strtotime('2007-02-28' . ' +1 day'));