php获取某个时间之前的若干月份

php获取某个时间之前的若干月份

strtotime 函数获取上个月的错误的问题,例如以下

$time = date('Y-m', strtotime(" -1 month", strtotime("2020-10-31")));
print_r($time);

打印出2020-10
在这里插入图片描述

除了10月还有[3, 5, 7, 10, 12]月份的31日会使用 strtotime(" -1 month")获取错误的日期

影响strtotime 获取上个月的问题,可以先获取该月份的1号.

  /**
     * 获取某个时间之前的若干月份
     * @param $num
     * @param string $time
     * @return array
     */
    function toLastMonth($num, $time = '')
    {
        if (empty($time)) {
            $time = date("Y-m-01");
        }

        $m = " last day of -" . $num . " month";
        $old_time = strtotime(date('Y-m-01', strtotime($m, strtotime($time))));

        $arr = array();
        for ($i = 0; $i <= $num - 1; ++$i) {
            $t = strtotime("+$i month", $old_time);
            $arr[] = date('Y-m', $t);
        }
        return $arr;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值