php 经常会计算当前时间的上个月,下个月是什么时候,写法如下:
date('Y/m/d', strtotime('-1 month'));
date('Y/m/d', strtotime('+1 month'));
但是不知道大家有没有发现,每次到每个月的最后一天的时候这个结果就经常会出异常,比如当前时间是2020年12月31号,执行下面代码时
echo date('Y/m/d', strtotime('-1 month'));
// 2020/12/01
echo date('Y/m/d', strtotime('-2 month'));
// 2020/10/31
是不是就懵了,其实我们深挖date函数会发现:
计算逻辑是下面这样的
先做 -1 month :今天是 2020/12/31,上个月的今天就是 2020/11/31
再做日期规范化:因为 11 月没有 31 号,自然成了 12 月的 1 号
而-2 month:10月31号是存在的,所以显示正常
那我该如何获取上个月的最后一天日期呢?
echo date('Y/m/d', strtotime('last day of -1 month'));
//2020/11/30
完美解决!!!
网友评论