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

У меня есть переменная с именем $effectiveDate содержащая дату 2012-03-26 .

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

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

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

а также

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

Что я делаю не так? Ни одна часть кода не работала.

Измените его так, чтобы вы получили ожидаемый формат:

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

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

 $effectiveDate = strtotime("+3 months", strtotime($effectiveDate)); // returns timestamp echo date('Ym-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('Ym-d', strtotime($effectiveDate . "+3 months") ); 

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

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

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

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

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

Проверьте учебники библиотеки здесь .

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

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

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

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