今天是5月31日
$currentM = date('m');
// 05
$nextM = date('m', strtotime('+1 month'));
// 07
我究竟做错了什么?我不明白为什么下个月要给07
。
从今天(31/5)开始的下个月是不存在的 31/6,所以它转发到 1/7。
您可能想要增加实际月份:$nextM = date('m') % 12 + 1
尝试 :
$d = new DateTime();
$d->modify('first day of next month');
echo $d->format('m');
您可以使用以下任何片段,
$month = date('n') % 12 + 1;
(或者)
$month = date('m', strtotime('+1 months'));
(或者)
$month = date('m') + 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