Добавление дней к $ Date в PHP - PullRequest
       14

Добавление дней к $ Date в PHP

181 голосов
/ 16 сентября 2010

У меня есть дата, возвращенная как часть запроса 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.

Как правильно получить мои даты в формате «Ymd», чтобы их можно было использовать в другом запросе?

Ответы [ 9 ]

372 голосов
/ 16 сентября 2010

Все, что вам нужно сделать, это использовать 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
68 голосов
/ 16 сентября 2010

Если вы используете 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 constructor , чтобы узнать, как построить другие периоды для добавления к вашей дате (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"
22 голосов
/ 28 января 2015

Начиная с версии 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');

Будьте осторожны при добавлении месяцев ... (и, в меньшей степени, лет)

17 голосов
/ 25 февраля 2013

Вот небольшой фрагмент для демонстрации даты модификации:

$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";
8 голосов
/ 14 декабря 2012

Вы также можете использовать следующий формат

strtotime("-3 days", time());
strtotime("+1 day", strtotime($date));

Вы можете сложить изменения следующим образом:

strtotime("+1 day", strtotime("+1 year", strtotime($date)));

Обратите внимание на разницу между этим подходом и ответом в других ответах: вместо объединения значений +1 day и <timestamp> вы можете просто передать метку времени как второй параметр strtotime.

4 голосов
/ 18 июня 2014

Использование переменной для количества дней

$myDate = "2014-01-16";
$nDays = 16;
$newDate = strtotime($myDate . '+ '.$nDays.'days');
echo newDate('d/m/Y', $soma); //format new date 
3 голосов
/ 21 сентября 2016

Вот самое простое решение для вашего запроса

$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
2 голосов
/ 22 ноября 2015

Здесь есть простой способ решить эту проблему.

<?php
   $date = "2015-11-17";
   echo date('Y-m-d', strtotime($date. ' + 5 days'));
?>

Вывод будет:

2015-11-22

Решение найдено здесь - Как добавить дни к дате в PHP

0 голосов
/ 14 декабря 2012

Все должны использовать ниже код:

$nday = time() + ( 24 * 60 * 60);    
echo 'Now:       '. date('Y-m-d') ."\n";    
echo 'Next Day: '. date('Y-m-d', $nday) ."\n";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...