php 计算每月周期天数和剩余天数

function get_residue_day(int $start_time)
{
    //当前号数
    $now_day = (int)date('d');
    //$now_day = 5;
    //旧套餐使用开始的号数
    $old_day = (int)date('d',$start_time);
    //$old_day = 31;
    $now_month_day = (int)date('t');
    //$now_month_day = 28;
    //获取当月天数
    if ($now_day >  $old_day) {
        $all_day = $now_month_day;
        $residue_day = $all_day - ($now_day - $old_day) + 1;
    }else{
        //  开始是22号,当前是5号
        $all_day = (int)date('t',strtotime('last month'));
        //$all_day = 31;

        // 如果上个月是31号,本月只有30号,那就最少30天收钱
        // 反过来,上个月30号 本月31号
        if ($all_day > $now_month_day) {
            $all_day = $now_month_day;
        }
        // 开始是31号,本月只有30,29,28天
        if ($all_day < $old_day) {
            $old_day = $all_day;
        }
        // 例如 上个月总数是30 ,开始是28号,当前的5号, 30-(30-28+5)
        $residue_day = $all_day - ($all_day - $old_day + $now_day) + 1;
    }

    return [
        'all_day' => $all_day,
        'residue_day' => $residue_day,
    ];
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值