/**
* 獲取月數據
* @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;
}
根據某個開始結束時間算出每月的開始結束時間
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.