根据某个开始结束时间算出每月的开始结束时间

	/**
     * 获取月数据
     * @param $data 数据
     * @param $start_time 开始时间戳
     * @param $end_time 结束时间戳
     * @return array 处理后的数据数组
     */
   function getMonthData( $data , $start_time , $end_time ) {
        $month = $this->getMonthDate( $start_time , $end_time );

        # 返回数据
        $res = [];
        for ( $i = 0; $i < count( $month ); $i++ ) {
            $count = 0;
            foreach ( $data as $k => $v ) {
                if( $v['add_time'] >= $month[$i]['start'] && $v['add_time'] <= $month[$i]['end'] ) {
                    $count++;
                }
            }

            if( $count ) {
                $res[] = [
                    'day' => '第'. ( $i+1 ) .'个月' ,
                    'start_time' => date( 'Y-m-d' , $month[$i]['start'] ),
                    'end_time' => date( 'Y-m-d' ,$month[$i]['end'] ) 
                ];
            } else {
                $res[] = [
                    'day' => '第'.( $i+1 ).'个月' ,
                    'start_time' => date( 'Y-m-d' ,$month[$i]['start'] ) ,
                    'end_time' => date( 'Y-m-d' ,$month[$i]['end'] )
                ];
            }

        }

        return $res;
    }


    /**
     * 处理月日期
     * @param $start_time 开始时间戳
     * @param $end_time 结束时间戳
     */
   function getMonthDate( $start_time , $end_time ) {
        # 开始结束时间戳数组
        $month = [];

        # 计算共有几个月
        $month_count = ( date( 'Y' , $end_time ) * 12 + date( 'm' , $end_time ) - ( date( 'Y' , $start_time ) * 12 + date( 'm' , $start_time ) ) );

        for ( $i=0; $i < $month_count; $i++ ) {
            $month_start = mktime( 0 , 0 , 0 , date( 'm' , $start_time ) + $i , date( 'd' , $start_time ) , date( 'Y' , $start_time ) );

            $month_end = mktime( 23 , 59 , 59 , date( 'm' , $month_start ) , date( 't' , $month_start ) , date( 'Y' , $month_start ) );

            $month[] = [ 'start' => $month_start , 'end' => $month_end ];
        }

        # 最后一个月开始
        $last_start = mktime( 0, 0 , 0 , date( 'm' , $end_time ) , 1 , date( 'Y' , $end_time ) );

        # 最后一个月的开始结束时间
        $month[] = [ 'start' => $last_start , 'end' => $end_time ];

        return $month;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值