宝安最好的网站建设株洲今日头条新闻
#需求是获取两个时间内 年周 、年季度、年半年的二级联动#
找了半天也找不到什么有用的信息 就自己简单写了一个 思路是先获取年的列表再去嵌套查询
根据前端VUE提供的格式嵌套
public function getDate(){$leixing = Request::param('leixing');$larr = array('1','2','3','4');if(empty($leixing)){echo apireturn(201,'类型不正确','');die;}else{if(!in_array($leixing,$larr)){echo apireturn(201,'类型不正确','');die;}}$start = '2023-01-01';$start_time = strtotime($start);$end_time = time();$start_year = date('Y',$start_time);$end_year = date('Y',$end_time);$year_arr = array();if($start_year == $end_year){array_push($year_arr,$start_year);}else{//获取年份for($i=$end_year;$i>=$start_year;$i--){array_push($year_arr,(string)$i);} }$array = array();foreach ($year_arr as $k => $v){if($leixing == 1){$week_arr = array();//取周数if($end_year == $v){$endzhounum = date('W',time()+86400);if($start_year == $v){$startzhounum = intval(date('W',$start_time+86400));}else{$startzhounum = 1;}//获取周数for($i=$endzhounum;$i>=$startzhounum;$i--){array_push($week_arr,'第'.$i.'周');} }else{$year = $v."-01-01";$time = strtotime($year);$yearLastDay = strtotime("-1 day", strtotime("+1 year", $time));$endzhounum = date('W',$yearLastDay);if($start_year == $v){$startzhounum = date('W',$start_time+86400);}else{$startzhounum = 1;}//获取周数for($i=$endzhounum;$i>=$startzhounum;$i--){array_push($week_arr,'第'.$i.'周');} }$array[$v.'年'] = $week_arr;}else if($leixing == 2){$quarter_arr = array();//取周数if($end_year == $v){$endjinum = ceil(date('n',time()+86400)/3);if($start_year == $v){$startjinum = ceil(date('n',$start_time+86400)/3);}else{$startjinum = 1;}//获取周数for($i=$endjinum;$i>=$startjinum;$i--){array_push($quarter_arr,'第'.$i.'季度');} }else{$year = $v."-01-01";$time = strtotime($year);$yearLastDay = strtotime("-1 day", strtotime("+1 year", $time));$endjinum = ceil(date('n',$yearLastDay)/3);if($start_year == $v){$startjinum = ceil(date('n',$start_time+86400)/3);}else{$startjinum = 1;}//获取周数for($i=$endjinum;$i>=$startjinum;$i--){array_push($quarter_arr,'第'.$i.'季度');} }$array[$v.'年'] = $quarter_arr;}else if($leixing == 3){$banyear_arr = array();//取周数if($end_year == $v){$endjinum = ceil(date('n',time()+86400)/6);if($start_year == $v){$startjinum = ceil(date('n',$start_time+86400)/6);}else{$startjinum = 1;}//获取周数for($i=$endjinum;$i>=$startjinum;$i--){if($i == 1){array_push($banyear_arr,'上半年');}else{array_push($banyear_arr,'下半年');}} }else{$year = $v."-01-01";$time = strtotime($year);$yearLastDay = strtotime("-1 day", strtotime("+1 year", $time));$endjinum = ceil(date('n',$yearLastDay)/6);if($start_year == $v){$startjinum = ceil(date('n',$start_time+86400)/6);}else{$startjinum = 1;}//获取周数for($i=$endjinum;$i>=$startjinum;$i--){if($i == 1){array_push($banyear_arr,'上半年');}else{array_push($banyear_arr,'下半年');}} }$array[$v.'年'] = $banyear_arr;}else if($leixing == 4){$array = $year_arr;}}echo apireturn(200,'success',$array);die;}
leixing的值为1 查询年-周、2为年-季度、3年-半年、4年
运行结果如下(年-季度)
{"status": 200,"msg": "success","data": {"2023年": ["第4季度","第3季度","第2季度","第1季度"]}
}
#开始时间目前是写死的 可以根据自己需求修改#