获取指定月份的节假日

2021-07-19 03:27:03   工作备份

 

时间格式化我使用了Carbon类包

  1. function getHoliday($date_time)
  2. {
  3. $date_time = \Carbon\Carbon::parse($date_time);
  4. $curl = curl_init ( ) ;
  5. $params = [
  6. 'query' => str_replace('年0', '年', $date_time->format('Y年m月')),
  7. 'resource_id'=> 39043,
  8. 'tn' => 'wisetpl',
  9. 'ie' => 'utf8',
  10. 'oe' => 'utf8',
  11. 'format' => 'json',
  12. ];
  13. //设置抓取的url
  14. curl_setopt ( $curl , CURLOPT_URL , 'https://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2DJv/api.php?'.http_build_query($params) ) ;
  15. //设置头文件的信息作为数据流输出
  16. curl_setopt ( $curl , CURLOPT_HEADER , 0 ) ;
  17. curl_setopt($curl, CURLOPT_TIMEOUT, 3);
  18. //设置获取的信息以文件流的形式返回,而不是直接输出。
  19. curl_setopt ( $curl , CURLOPT_RETURNTRANSFER , 1 ) ;
  20. //执行命令
  21. $data = curl_exec ( $curl ) ;
  22. //关闭URL请求
  23. curl_close ( $curl ) ;
  24. //显示获得的数据
  25. $holiday_info = json_decode($data,true);
  26. $holiday_info['data'][0]['almanac'] = $holiday_info['data'][0]['almanac'] ?? [];
  27. $array = [];
  28. foreach ($holiday_info['data'][0]['almanac'] as $value) {
  29. $status = $value['status'] ?? 0;
  30. //$status 1假节日 2周末补班 0正常时间(可按照周六周日来划分是否是节假日)
  31. $date = \Carbon\Carbon::parse($value['oDate'])->setTimezone('Asia/Shanghai');
  32. $is_weekend = $date->isWeekend();
  33. $de_time = $date->format('Y-m-d');
  34. if (1 == $status || ($is_weekend && 0 == $status)) {
  35. //假日
  36. $array[$date->format('Y-m')][] = $de_time;
  37. }
  38. }
  39. if ($array) {
  40. $array = $array[$date_time->format('Y-m')] ?? [];
  41. }
  42. return $array;
  43. }
  44. return getHoliday("2021-07");
  1. [
  2. "2021-07-03",
  3. "2021-07-04",
  4. "2021-07-10",
  5. "2021-07-11",
  6. "2021-07-17",
  7. "2021-07-18",
  8. "2021-07-24",
  9. "2021-07-25",
  10. "2021-07-31"
  11. ]