下个月用PHP搞错了

时间:2013-05-31 10:19:46

标签: php date

今天 31 st 可能

$currentM = date('m');
// 05

$nextM = date('m', strtotime('+1 month'));
// 07

我做错了什么?我不明白为什么下个月会给07

4 个答案:

答案 0 :(得分:11)

从今天(31/5)起的下一个月是31/6,它不存在,所以它转发到1/7。

您可能希望增加实际月份:$nextM = date('m') % 12 + 1

答案 1 :(得分:3)

尝试:

$d = new DateTime();
$d->modify('first day of next month');
echo $d->format('m');

答案 2 :(得分:1)

您可以使用以下任何代码段

$month = date('n') % 12 + 1;

(OR)

$month = date('m', strtotime('+1 months'));

(OR)

$month = date('m') + 1

答案 3 :(得分:1)

问题在于今天是第31位。添加一个月可能会重叠2个月。

我通常只是通过使用第1天添加一个月并使用第28天减去一个月来解决这个问题:

 echo(date('m'));
 echo "\n";
 echo(date('m', strtotime(date('Y-m-28') . ' -1 month'))); // day 28 - 1 month
 echo "\n";
 echo(date('m', strtotime(date('Y-m-1') . ' +1 month'))); // day 1 + 1 month

输出:

05
04
06