PHP判断指定日期是否为工作日
百度接口返回数据已变更,用不了啦。
namespace Isworkday;
/**
* 指定日期是否为工作日
*
* Class Api
*/
class Api {
/**
* 获取日期类型
*
* @param $date 指定年月日 Y-m-d格式
* @return string|\day_type 返回类型 workday=工作日,workend=周末,holiday=节假日
*/
public function getDateType($date = '')
{
empty($date) && $date = date('Y-m-d');
$url = "https://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2DJv/api.php?query=".date('Y年m月d日',strtotime($date))."&resource_id=6018&format=json&_=1544251006975";
$res = mb_convert_encoding(curl($url), 'UTF-8', 'GBK');
$res = json_decode($res,true);
$res['status'] == '0' && $days = $res['data'][0];
$day_type = '';
// 如果当月存有节假日,我们优先判断是否节假日
if(!empty($days['holiday'])){
foreach($days['holiday'] as $k => $v){
$holidays_list = is_array($v) ? $holidays_list = $v['list'] : $days['holiday']['list'];
foreach($holidays_list as $holiday){
if(date('Y-n-j', strtotime($date)) == $holiday['date']){
// 节假日中 status == 1,表示 '节假日'
if($holiday['status'] == 1){
$day_type = 'holiday';
// 节假日中 status == 2,表示 '工作日'
}elseif($holiday['status'] == 2){
$day_type = 'weekday';
}
}
}
if(!is_array($v)){
break;
}
}
// 未匹配到节假日,正常的周六、日休息
if(empty($day_type)){
$day_week = date('w', strtotime($date));
if($day_week == 0 || $day_week == 6){
$day_type = 'weekend';
}else{
$day_type = 'weekday';
}
}
//返回
return $day_type;
}
}
/*
CURL 获取数据
@author cjm 20160608
@param string url 请求地址
@param array data 请求数据
@param string type 请求类型
@return string
*/
function curl($url, $type = 'get', $data = array())
{
//初始化
$curl = curl_init();
//设置抓取的url
curl_setopt($curl, CURLOPT_URL, $url);
//设置获取的信息以文件流的形式返回,而不是直接输出。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
//post方式
if($type == 'post'){
//设置post方式提交
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
//执行命令
$result = curl_exec($curl);
//关闭URL请求
curl_close($curl);
//返回
return $result;
}
}