/**
* 获取月数据
* @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;
}
根据某个开始结束时间算出每月的开始结束时间
最新推荐文章于 2023-05-28 12:53:06 发布