以下经常有人认为是strtotime的bug
echo date('Y-m', strtotime('+1 month')); // 输出2016-05
echo date('Y-m', strtotime('+2 month')); // 输出2016-05
下方是计算过程
<?php
// 当前日期 3-31
// +1 month 等同 +31 day
echo date('Y-m-d H:i:s', strtotime('+1 month'));
echo "\n" . date('Y-m-d H:i:s', strtotime('+31 day'));
echo "\n---------\n";
// 当前日期 3-31
// 下一个月最后一天是 4-30
// +2 month 等同 +31+30 day
echo date('Y-m-d H:i:s', strtotime('+2 month'));
echo "\n" . date('Y-m-d H:i:s', strtotime('+61 day'));
echo "\n---------\n";
// 当前日期 3-31
// 下一个月最后一天是 4-30
// 下下一个月最后一天是 5-31
// +3 month 等同 +31+30+31 day
echo date('Y-m-d H:i:s', strtotime('+3 month'));
echo "\n" . date('Y-m-d H:i:s', strtotime('+92 day'));
// 输出结果
//2016-05-01 16:25:01
//2016-05-01 16:25:01
//---------
//2016-05-31 16:25:01
//2016-05-31 16:25:01
//---------
//2016-07-01 16:25:01
//2016-07-01 16:25:01