Подтвердить что ты не робот

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

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

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

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

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

и

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

Ответ 3

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

Попробуйте следующее:

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

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

Ответ 4

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

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

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

Ответ 5

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

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

Ответ 6

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

$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;

Ответ 7

Добавьте 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>';
}

Ответ 8

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

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

Ответ 9

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

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

Ознакомьтесь с учебниками по библиотеке здесь.

Ответ 10

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

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

Ответ 11

Разница дат в месяцах

$date1 = '2017-01-20';
$date2 = '2019-01-20';

$ts1 = strtotime($date1);
$ts2 = strtotime($date2);

$year1 = date('Y', $ts1);
$year2 = date('Y', $ts2);

$month1 = date('m', $ts1);
$month2 = date('m', $ts2);

echo $joining_months = (($year2 - $year1) * 12) + ($month2 - $month1);