Я хочу добавить количество дней к текущей дате: Я использую следующий код:
$i=30;
echo $date = strtotime(date("Y-m-d", strtotime($date)) . " +".$i."days");
Но вместо того, чтобы получить надлежащую дату я получаю это: 2592000
Предложите.
Это должно быть
echo date('Y-m-d', strtotime("+30 days"));
strtotime
ожидает получить строку, содержащую формат даты на английском языке (США), и попытается преобразовать этот формат в метку времени Unix (количество секунд с 1 января 1970 00:00:00 UTC) относительно отметки времени, указанной в now, или текущего времени, если now не указан.
while date
Возвращает строку, отформатированную в соответствии с заданной строкой формата, используя заданную целочисленную метку времени или текущее время, если метка времени не указана.
См. Страницы руководства для
и их сигнатуры функций.
Вы можете использовать класс DateTime, встроенный в PHP. У него есть метод под названием "add", и то, как он используется, подробно продемонстрирован в руководстве: http://www.php.net/manual/en/datetime.add.php
Однако для этого требуется PHP. 5.3.0.
Имейте в виду, что изменение перевода часов из-за перехода на летнее время может создать некоторые проблемы при расчете только дней.
Вот небольшая функция php, которая позаботится об этом:
function add_days($date, $days) {
$timeStamp = strtotime(date('Y-m-d',$date));
$timeStamp+= 24 * 60 * 60 * $days;
// ...clock change....
if (date("I",$timeStamp) != date("I",$date)) {
if (date("I",$date)=="1") {
// summer to winter, add an hour
$timeStamp+= 60 * 60;
} else {
// summer to winter, deduct an hour
$timeStamp-= 60 * 60;
} // if
} // if
$cur_dat = mktime(0, 0, 0,
date("n", $timeStamp),
date("j", $timeStamp),
date("Y", $timeStamp)
);
return $cur_dat;
}
Вы также можете попробовать:
$date->modify("+30 days");