PHP добавить месяц к дате на день с месяцем 31

Я использую код, который отлично работает на все даты, кроме 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 дней, а не «месяц».

Как я могу правильно получить первый день следующего месяца на каждой дате?

Спасибо.

1

Решение

Я думаю, что это должно работать —

$time = strtotime("2015-05-31");
echo $final = date("Y-m-d", strtotime("first day of next month", $time));
4

Другие решения

Вы можете попробовать вот так:

<?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

0

По вопросам рекламы [email protected]