Ответ 1
Измените его так, чтобы вы получили ожидаемый формат:
$effectiveDate = date('Y-m-d', strtotime("+3 months", strtotime($effectiveDate)));
У меня есть переменная с именем $effectiveDate
, содержащая дату 2012-03-26.
Я пытаюсь добавить три месяца к этой дате и не увенчались успехом.
Вот что я пробовал:
$effectiveDate = strtotime("+3 months", strtotime($effectiveDate));
и
$effectiveDate = strtotime(date("Y-m-d", strtotime($effectiveDate)) . "+3 months");
Что я делаю неправильно? Ни одна часть кода не работала.
Измените его так, чтобы вы получили ожидаемый формат:
$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**
Разница дат в месяцах
$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);