PHP strtotime 获取月份问题

问题: 使用strtotime对时间进行月份加减时会有这样的问题: 对月份进行加减时会多加或减一个月。

示例: 获取 7月31日接下来的三个月;结果:获取到 8、10、 10月, 与我们预期不符合,猜测可能和9月没有31号有关;而使用月初 7月01日则得到 8、9、10月,符合预期结果。

总结: 所以使用该函数时注意不要直接对当前月份操作,而是取当前月份1号,在此时间上操作。

代码:

    $month_end = strtotime('2018-07-31 00:00:01');
    $month_start = strtotime( '2018-07-01 00:00:01');

    // 月末时间
    echo(date('Y-m-d',strtotime('+ 1 month',$month_end))); echo('<br>');
    echo(date('Y-m-d',strtotime('+ 2 month', $month_end)));echo('<br>');
    echo(date('Y-m-d',strtotime('+ 3 month', $month_end)));echo('<br>');

    // 月初时间
    echo(date('Y-m-d',strtotime('+ 1 month',$month_start))); echo('<br>');
    echo(date('Y-m-d',strtotime('+ 2 month', $month_start)));echo('<br>');
    echo(date('Y-m-d',strtotime('+ 3 month', $month_start)));echo('<br>');

Bug地址

PHP strtotime 获取月份问题
分享