Подтвердить что ты не робот

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

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

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

Каков наилучший способ сделать это?

4b9b3361

Ответ 1

Если вы хотите сделать это в PHP:

// replace time() with the time stamp you want to add one day to
$startDate = time();
date('Y-m-d 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);

Ответ 2

Вот еще один способ сделать это с помощью DateTime, который был представлен в PHP 5.2. В отличие от использования strtotime(), это будет учитывать летнее время и високосный год.

$datetime = new DateTime('2013-01-29');
$datetime->modify('+1 day');
echo $datetime->format('Y-m-d H:i:s');

// Available in PHP 5.3

$datetime = new DateTime('2013-01-29');
$datetime->add(new DateInterval('P1D'));
echo $datetime->format('Y-m-d H:i:s');

// Available in PHP 5.4

echo (new DateTime('2013-01-29'))->add(new DateInterval('P1D'))->format('Y-m-d H:i:s');

// Available in PHP 5.5

$start = new DateTimeImmutable('2013-01-29');
$datetime = $start->modify('+1 day');
echo $datetime->format('Y-m-d H:i:s');

Ответ 3

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

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

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

Ответ 4

  • Используйте strtotime для преобразования строки в метку времени.
  • Добавьте к нему день (например: добавив 86400 секунд (24 * 60 * 60))

например:

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

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

Ответ 5

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

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

Ответ 6

Вы можете использовать

$now = new DateTime();
$date = $now->modify('+1 day')->format('Y-m-d H:i:s');

Ответ 7

Использование времени запроса сервера для добавления дней. Работает как положено.

25/08/19 => 27/09/19

$timestamp = $_SERVER['REQUEST_TIME'];
$dateNow = date('d/m/y', $timestamp);
$newDate = date('d/m/y', strtotime('+2 day', $timestamp));

Здесь "+2 days", чтобы добавить любое количество дней.