添加一天到一个date

我的代码添加一天到一个date返回date之前添加date: 2009-09-30 20:24:00添加一天后的date应该滚动到下一个月: 1970-01-01 17:33:29

 <?php //add day to date test for month roll over $stop_date = date('Ymd H:i:s', strtotime("2009-09-30 20:24:00")); echo 'date before day adding: '.$stop_date; $stop_date = date('Ymd H:i:s', strtotime('+1 day', $stop_date)); echo ' date after adding one day. SHOULD be rolled over to the next month: '.$stop_date; ?> 

我之前使用过类似的代码,我在这里做错了什么?

 <?php $stop_date = '2009-09-30 20:24:00'; echo 'date before day adding: ' . $stop_date; $stop_date = date('Ymd H:i:s', strtotime($stop_date . ' +1 day')); echo 'date after adding 1 day: ' . $stop_date; ?> 

对于PHP 5.2.0+,你也可以这样做:

 $stop_date = new DateTime('2009-09-30 20:24:00'); echo 'date before day adding: ' . $stop_date->format('Ymd H:i:s'); $stop_date->modify('+1 day'); echo 'date after adding 1 day: ' . $stop_date->format('Ymd H:i:s'); 
 $date = new DateTime('2000-12-31'); $date->modify('+1 day'); echo $date->format('Ym-d') . "\n"; 

最简单的解决scheme

 $date = new DateTime('+1 day'); echo $date->format('Ymd H:i:s'); 

尝试这个

 echo date('Ymd H:i:s',date(strtotime("+1 day", strtotime("2009-09-30 20:24:00")))); 

简单阅读和理解方式:

 $original_date = "2009-09-29"; $time_original = strtotime($original_date); $time_add = $time_original + (3600*24); //add seconds of one day $new_date = date("Ymd", $time_add); echo $new_date; 

我总是只添加86400(一天中的秒数):

 $stop_date = date('Ymd H:i:s', strtotime("2009-09-30 20:24:00") + 86400); echo 'date after adding 1 day: '.$stop_date; 

这可不是最简单的方法,但它可行!

虽然我同意Doug Hays的回答,但我会在这里指出你的代码不起作用的原因是因为strtotime()期望INT作为第二个参数,而不是string(即使是一个表示date的string)

如果你打开最大错误报告,你会看到这是一个“非正常形成的数值”错误,这是E_NOTICE级别。

以下代码使用DateTime类和它的方法modify()和format()来获得今年1月的第一天(但可以是另一个date),并添加365天到当天(但可以是N天) ):

 echo (new DateTime((new DateTime())->modify('first day of January this year')->format('Ym-d')))->modify('+365 days')->format('Ym-d'); 

modify()方法可用于将增量添加到现有的DateTime值。

用当前的date和时间创build一个新的DateTime对象:

 $due_dt = new DateTime(); 

获得DateTime对象后,可以通过添加或减去时间段来操作其值:

 $due_dt->modify('+1 day'); 

您可以阅读更多的PHP手册 。