将1天添加到DATETIME格式值

在某些情况下,我想为我的DATETIME格式化variables的值添加1天:

$start_date = date('Ymd H:i:s', strtotime("{$_GET['start_hours']}:{$_GET['start_minutes']} {$_GET['start_ampm']}")); 

做这个的最好方式是什么?

如果你想在PHP中做到这一点:

 // replace time() with the time stamp you want to add one day to $startDate = time(); date('Ymd H:i:s', strtotime('+1 day', $startDate)); 

如果你想在MySQL中添加date:

 -- replace CURRENT_DATE with the date you want to add one day to SELECT DATE_ADD(CURRENT_DATE, INTERVAL 1 DAY); 

用PHP 5.2引入的DateTime有更多的方法可以做到这一点。 与使用strtotime()不同,这将strtotime()夏令时和闰年。

 $datetime = new DateTime('2013-01-29'); $datetime->modify('+1 day'); echo $datetime->format('Ymd H:i:s'); // Available in PHP 5.3 $datetime = new DateTime('2013-01-29'); $datetime->add(new DateInterval('P1D')); echo $datetime->format('Ymd H:i:s'); // Available in PHP 5.4 echo (new DateTime('2013-01-29'))->add(new DateInterval('P1D'))->format('Ymd H:i:s'); // Available in PHP 5.5 $start = new DateTimeImmutable('2013-01-29'); $datetime = $start->modify('+1 day'); echo $datetime->format('Ymd H:i:s'); 
  1. 使用strtotime将string转换为时间戳
  2. 添加一天(例如:通过添加86400秒(24 * 60 * 60))

例如:

 $time = strtotime($myInput); $newTime = $time + 86400; 

如果只是增加1天,那么再次使用strtotime可能是矫枉过正。

DateTime构造函数接受一个参数string time$time可以是不同的东西,它必须尊重date时间格式 。

有一些有效的值作为例子:

  • 'now' (默认值)
  • 2017-10-19
  • 2017-10-19 11:59:59
  • 2017-10-19 +1day

所以,在你的情况下,你可以使用以下内容。

 $dt = new \DateTime('now +1 day'); //Tomorrow $dt = new \DateTime('2016-01-01 +1 day'); //2016-01-02 

我build议从Zend Framework开始使用Zend_Date类。 我知道,它有点偏离主题,但我会喜欢这种方式:-)

 $date = new Zend_Date(); $date->add('24:00:00', Zend_Date::TIMES); print $date->get();