У меня есть дата, возвращаемая как часть запроса mySQL в форме 2010-09-17
Я хотел бы установить переменные $ Date2 в $ Date5 следующим образом:
$Date2 = $Date + 1
$Date3 = $Date + 2
и т.д..
так что он возвращает 2010-09-18
, 2010-09-19
т. д. …
я пытался
date('Ym-d', strtotime($Date. ' + 1 day'))
но это дает мне дату ДО $Date
.
Каков правильный способ получить мои Даты в форме формы «Ymd», чтобы они могли использоваться в другом запросе?
Все, что вам нужно сделать, это использовать days
вместо day
:
<?php $Date = "2010-09-17"; echo date('Ym-d', strtotime($Date. ' + 1 days')); echo date('Ym-d', strtotime($Date. ' + 2 days')); ?>
И он выводится правильно:
2010-09-18 2010-09-19
Если вы используете 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('Ym-d');
Взгляните на DateInterval
руководства конструктора DateInterval
чтобы узнать, как создавать другие периоды для добавления к вашей дате (2 дня будут 'P2D'
, 3 – 'P3D'
и т. Д.).
Без PHP 5.3 вы должны иметь возможность использовать strtotime
так, как вы это делали (я тестировал его, и он работает как в версиях 5.1.6, так и в 5.2.10):
$Date1 = '2010-09-17'; $Date2 = date('Ym-d', strtotime($Date1 . " + 1 day")); // var_dump($Date2) returns "2010-09-18"
Вот небольшой фрагмент, демонстрирующий модификацию даты:
$date = date("Ymd"); //increment 2 days $mod_date = strtotime($date."+ 2 days"); echo date("Ymd",$mod_date) . "\n"; //decrement 2 days $mod_date = strtotime($date."- 2 days"); echo date("Ymd",$mod_date) . "\n"; //increment 1 month $mod_date = strtotime($date."+ 1 months"); echo date("Ymd",$mod_date) . "\n"; //increment 1 year $mod_date = strtotime($date."+ 1 years"); echo date("Ymd",$mod_date) . "\n";
Из 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('Ym-d');
Будьте осторожны при добавлении месяцев … (и в меньшей степени, лет)
Вы также можете использовать следующий формат
strtotime("-3 days", time()); strtotime("+1 day", strtotime($date));
Вы можете складывать изменения таким образом:
strtotime("+1 day", strtotime("+1 year", strtotime($date)));
Обратите внимание на разницу между этим подходом и тем, что содержится в других ответах: вместо конкатенации значений +1 day
и <timestamp>
вы можете просто передать метку времени как второй параметр strtotime
.
Использование переменной для количества дней
$myDate = "2014-01-16"; $nDays = 16; $newDate = strtotime($myDate . '+ '.$nDays.'days'); echo newDate('d/m/Y', $soma); //format new date
Здесь есть простой способ решить эту проблему.
<?php $date = "2015-11-17"; echo date('Ym-d', strtotime($date. ' + 5 days')); ?>
Выход будет:
2015-11-22
Решение найдено здесь – Как добавить дни в PHP
Вот простейшее решение вашего запроса
$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,"Ymd");\\set date format of the result
Все должны использовать следующий код:
$nday = time() + ( 24 * 60 * 60); echo 'Now: '. date('Ym-d') ."\n"; echo 'Next Day: '. date('Ym-d', $nday) ."\n";