3

今天是5月31

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

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

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

4

4 回答 4

11

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

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

于 2013-05-31T10:20:47.920 回答
3

尝试 :

$d = new DateTime();
$d->modify('first day of next month');
echo $d->format('m');
于 2013-05-31T10:26:25.350 回答
1

您可以使用以下任何片段,

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

(或者)

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

(或者)

$month = date('m') + 1
于 2013-05-31T10:26:45.170 回答
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
于 2013-05-31T10:30:10.050 回答