根據某個開始結束時間算出每月的開始結束時間

	/**
     * 獲取月數據
     * @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;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章