Я использую код, который отлично работает на все даты, кроме 2015-05-31.
Код приносит мне первый день следующего месяца.
это работает на каждую дату, даже если день месяца 31.
$time = strtotime('2015-07-31');
$final = date("Y-m-1", strtotime("+1 month", $time));
echo $final;
выходной будет -> 2015-08-1.
По какой-то причине на дату 2015-05-31 возвращается 2015-07-1 вместо 2015-06-01
$time = strtotime('2015-05-31');
$final = date("Y-m-1", strtotime("+1 month", $time));
echo $final;
Вероятно, потому, что 6-2014 имеет 30 дней, а 8-2014 — 31 день, поэтому +1 месяц добавляет 30 дней, а не «месяц».
Как я могу правильно получить первый день следующего месяца на каждой дате?
Спасибо.
Я думаю, что это должно работать —
$time = strtotime("2015-05-31");
echo $final = date("Y-m-d", strtotime("first day of next month", $time));
Вы можете попробовать вот так:
<?php
$date = new DateTime('2000-12-31');
$interval = new DateInterval('P1M');
$date->add($interval);
echo $date->format('Y-m-d') . "\n";
$date->add($interval);
echo $date->format('Y-m-d') . "\n";
?>
Выход:
2001-01-31
2001-03-03
Для дополнительной информации :http://in3.php.net/manual/en/datetime.add.php