добавление 1 дня к значению формата DATETIME

В некоторых ситуациях я хочу добавить 1 день к значению моей форматированной переменной DATETIME:

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

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

Существует более чем один способ сделать это с помощью DateTime, который был представлен в PHP 5.2. В отличие от использования 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 для преобразования строки в strtotime времени
  2. Добавьте к нему день (например: добавив 86400 секунд (24 * 60 * 60))

например:

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

Если это только добавление 1 дня, то использование strtotime снова, вероятно, слишком велико.

Конструктор DateTime принимает время string time параметра. $time может быть разным, он должен уважать формат datetime .

В качестве примеров приведены некоторые допустимые значения:

  • '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 

Я предлагаю начать использовать классы Zend_Date из Zend Framework . Я знаю, его немного оффтоп, но мне понравится вот так 🙂

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