PHP在月份31日的某个日期添加月份

时间:2014-09-30 05:35:24

标签: php date datetime strtotime

我使用的代码在所有日期都可以正常工作,2015-05-31除外。 代码带给我下个月的第一天。 它适用于每个日期,即使每月的日期为31日。

$time = strtotime('2015-07-31');
$final = date("Y-m-1", strtotime("+1 month", $time));
echo $final;

输出将是 - > 2015年8月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天而不是“月”。

我怎样才能在每个日期的下个月的第一天得到正确的答案?

谢谢。

2 个答案:

答案 0 :(得分:4)

我认为这应该有效 -

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

答案 1 :(得分:0)

您可以尝试这样:

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