Добавление трех месяцев к дате в PHP


у меня есть переменная с именем $effectiveDate указана дата 2012-03-26.

Я пытаюсь добавить три месяца к этой дате и потерпел неудачу в этом.

вот что я пробовал:

$effectiveDate = strtotime("+3 months", strtotime($effectiveDate));

и

$effectiveDate = strtotime(date("Y-m-d", strtotime($effectiveDate)) . "+3 months");

что я делаю не так? Ни один фрагмент кода не работал.

10 60

10 ответов:

изменить это даст вам ожидаемый формат:

$effectiveDate = date('Y-m-d', strtotime("+3 months", strtotime($effectiveDate)));

Я предполагаю, что "не работает" Вы имеете в виду, что он дает вам метку времени вместо форматированной даты, потому что вы делали это правильно:

$effectiveDate = strtotime("+3 months", strtotime($effectiveDate)); // returns timestamp
echo date('Y-m-d',$effectiveDate); // formatted version

вам нужно преобразовать дату в читаемое значение. Вы можете использовать strftime () или date ().

попробуйте это:

$effectiveDate = strtotime("+3 months", strtotime($effectiveDate));
$effectiveDate = strftime ( '%Y-%m-%d' , $effectiveDate );
echo $effectiveDate;

Это должно работать. Мне нравится использовать strftime лучше, так как он может быть использован для локализации вы можете попробовать его.

Tchoupi это ответ можно сделать немного менее подробным, объединив аргумент для strtotime () следующим образом:

$effectiveDate = date('Y-m-d', strtotime($effectiveDate . "+3 months") );

(Это зависит от деталей реализации магии, но вы всегда можете пойти посмотреть на них, если вы правильно недоверчивы.)

следующее должно работать,пожалуйста, попробуйте это:

$effectiveDate = strtotime("+1 months", strtotime(date("y-m-d")));
echo $time = date("y/m/d", $effectiveDate);

этот ответ не совсем на этот вопрос. Но я добавлю это, так как этот вопрос все еще доступен для поиска, как добавить/вычесть период с даты.

$date = new DateTime('now');
$date->modify('+3 month'); // or you can use '-90 day' for deduct
$date = $date->format('Y-m-d h:i:s');
echo $date;

добавить N-е дни, месяцы и годы

$n = 2;
for ($i = 0; $i <= $n; $i++){
    $d = strtotime("$i days");
    $x = strtotime("$i month");
    $y = strtotime("$i year");
    echo "Dates : ".$dates = date('d M Y', "+$d days");
    echo "<br>";
    echo "Months : ".$months = date('M Y', "+$x months");
    echo '<br>';
    echo "Years : ".$years = date('Y', "+$y years");
    echo '<br>';
}

следующее должно работать, но вам может потребоваться изменить формат:

echo date('l F jS, Y (m-d-Y)', strtotime('+3 months', strtotime($DateToAdjust)));

вы можете использовать класс simpleDate из простых библиотек PHP:

include('../code/simpleDate.php');
$date = new simpleDate();
echo $date->set($effectiveDate)->addMonth(3)->get();

Регистрация библиотека учебники здесь.

следующее должно работать

$d = strtotime("+1 months",strtotime("2015-05-25"));
echo   date("Y-m-d",$d); // This will print **2015-06-25**