Добавление дней к $Date в PHP
У меня есть дата, возвращаемая как часть запроса mySQL в форме 2010-09-17
Я хотел бы установить переменные $Date2 в $Date5 следующим образом:
$Date2 = $Date + 1
$Date3 = $Date + 2
и т.д..
чтобы он возвращал 2010-09-18
, 2010-09-19
и т.д.
Я пробовал
date('Y-m-d', strtotime($Date. ' + 1 day'))
но это дает мне дату ДО $Date
.
Каков правильный способ получить мои даты в форме формы "Y-m-d", чтобы они могли использоваться в другом запросе?
Ответы
Ответ 1
Все, что вам нужно сделать, это использовать days
вместо day
следующим образом:
<?php
$Date = "2010-09-17";
echo date('Y-m-d', strtotime($Date. ' + 1 days'));
echo date('Y-m-d', strtotime($Date. ' + 2 days'));
?>
И он выводится правильно:
2010-09-18
2010-09-19
Ответ 2
Если вы используете PHP 5.3, вы можете использовать объект DateTime
и его add
:
$Date1 = '2010-09-17';
$date = new DateTime($Date1);
$date->add(new DateInterval('P1D')); // P1D means a period of 1 day
$Date2 = $date->format('Y-m-d');
Взгляните на страницу руководства DateInterval
, чтобы узнать, как создавать другие периоды для добавления к вашей дате (2 дня 'P2D'
, 3 будет 'P3D'
и т.д.).
Без PHP 5.3 вы можете использовать strtotime
способ, которым вы это сделали (я протестировал его, и он работает как в версиях 5.1.6, так и в 5.2.10):
$Date1 = '2010-09-17';
$Date2 = date('Y-m-d', strtotime($Date1 . " + 1 day"));
// var_dump($Date2) returns "2010-09-18"
Ответ 3
Вот небольшой фрагмент, демонстрирующий изменения даты:
$date = date("Y-m-d");
//increment 2 days
$mod_date = strtotime($date."+ 2 days");
echo date("Y-m-d",$mod_date) . "\n";
//decrement 2 days
$mod_date = strtotime($date."- 2 days");
echo date("Y-m-d",$mod_date) . "\n";
//increment 1 month
$mod_date = strtotime($date."+ 1 months");
echo date("Y-m-d",$mod_date) . "\n";
//increment 1 year
$mod_date = strtotime($date."+ 1 years");
echo date("Y-m-d",$mod_date) . "\n";
Ответ 4
Из PHP 5.2 вы можете использовать модификацию с объектом DateTime:
http://php.net/manual/en/datetime.modify.php
$Date1 = '2010-09-17';
$date = new DateTime($Date1);
$date->modify('+1 day');
$Date2 = $date->format('Y-m-d');
Будьте осторожны при добавлении месяцев... (и в меньшей степени, лет)
Ответ 5
Вы также можете использовать следующий формат
strtotime("-3 days", time());
strtotime("+1 day", strtotime($date));
Вы можете складывать изменения таким образом:
strtotime("+1 day", strtotime("+1 year", strtotime($date)));
Обратите внимание на разницу между этим подходом и другим в других ответах: вместо объединения значений +1 day
и <timestamp>
вы можете просто передать метку времени как второй параметр strtotime
.
Ответ 6
Использование переменной для числа дней
$myDate = "2014-01-16";
$nDays = 16;
$newDate = strtotime($myDate . '+ '.$nDays.'days');
echo newDate('d/m/Y', $soma); //format new date
Ответ 7
Здесь есть простой способ решить эту проблему.
<?php
$date = "2015-11-17";
echo date('Y-m-d', strtotime($date. ' + 5 days'));
?>
Выход будет:
2015-11-22
Решение найдено здесь - Как добавить дни до даты в PHP
Ответ 8
Вот простейшее решение для вашего запроса
$date=date_create("2013-03-15");\\or your date string
date_add($date,date_interval_create_from_date_string("40 days"));\\add number of days
echo date_format($date,"Y-m-d");\\set date format of the result
Ответ 9
Все должны использовать следующий код:
$nday = time() + ( 24 * 60 * 60);
echo 'Now: '. date('Y-m-d') ."\n";
echo 'Next Day: '. date('Y-m-d', $nday) ."\n";