课堂小提问:
echo date('Y-m-d', strtotime("-1 month", strtotime("2017-03-31")));输出什么?
echo date('Y-m-d', strtotime(" +1 month", strtotime("2017-08-31")));输出又是什么?
现在公布正确答案了:
echo date('Y-m-d', strtotime("-1 month", strtotime("2017-03-31")));//输出2017-03-03
echo date('Y-m-d', strtotime(" +1 month", strtotime("2017-08-31")));//输出2017-10-01
小伙伴们,你们答对了吗?
没有答对也不要慌,接着往下看
…
为什么出现这种情况呢?为了让大家更容易理解,我们来模拟一下date内部对此的处理逻辑:
第一步:先做 -1 month,2017-07-31的 -1 month 就是2017-06-31
第二步:做日期规范化,因为6月没有31号,只有30号,多了一点要加上,所以6月31就等于了7月1日
又有人说了,我不想让日期规范化,我希望月底的 -1 month 或者 +1 month也是月底,怎么搞?
别急,这是我接下来要说的
从 PHP5.3 开始,date新增了一系列修正短语,来明确这个问题,也就是“first day of”和“last day of”,你可以限定好不要让date自动“规范化”
echo date('Y-m-d', strtotime("last day of -1 month", strtotime("2017-03-31")));//输出2017-02-28
echo date('Y-m-d', strtotime("first day of -1 month", strtotime("2017-03-31")));//输出2017-09-01
好啦,小伙伴们都记住了吧
记住的话,你们也可以当别人的老师了,小小炫耀一番,哈哈,我也是刚入手的知识,热乎着,大家如果想看一手资料,大手点一下:http://www.laruence.com/2018/07/31/3207.html
那么,课堂时间到此结束,bye~