美文网首页
php strtotime时间计算陷阱

php strtotime时间计算陷阱

作者: 布兰特 | 来源:发表于2021-03-30 12:50 被阅读0次

    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
    

    完美解决!!!

    相关文章

      网友评论

          本文标题:php strtotime时间计算陷阱

          本文链接:https://www.haomeiwen.com/subject/nfawhltx.html