package com.cms.util;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class HolidayUtil {
/**
* @param urlAll
* :请求接口
* @param httpArg
* :参数
* @return 返回结果
*/
public static String request(String httpArg) {
String httpUrl = "http://tool.bitefu.net/jiari/";
BufferedReader reader = null;
String result = null;
StringBuffer sbf = new StringBuffer();
httpUrl = httpUrl + "?d=" +httpArg;
try {
URL url = new URL(httpUrl);
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
connection.setRequestMethod("GET");
connection.connect();
InputStream is = connection.getInputStream();
reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
String strRead = null;
while ((strRead = reader.readLine()) != null) {
sbf.append(strRead);
}
reader.close();
result = sbf.toString();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
// 调的是这个方法
public static Date getHolidayDate(Date date,Calendar c) {
//计算节假日
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String httpArg = sdf.format(date);
String jsonResult = request(httpArg);
//如果是周六周日 和节假日 后放一天
//此接口 国家法定调休日 会放在上班里 无论这天是否周末
//所以只可以判断 节假日 不来判断 是否周末
// 0 上班 1周末 2节假日
if ("2".equals(jsonResult)) {
// 为国家法定节假日 自动 加一天 并 回调方法
c.setTime(date);
c.add(Calendar.DAY_OF_MONTH, 1);
date = c.getTime();
return getHolidayDate(date,c);
}else { //判断是否周末 如果是周末 日期加一回调 反之 返回当前计算的时间
SimpleDateFormat dateFm = new SimpleDateFormat("E");
String currSun = dateFm.format(date);
if (currSun.equals("星期六")) {
c.setTime(date);
c.add(Calendar.DAY_OF_MONTH, 2);
date = c.getTime();
return getHolidayDate(date,c);
} else if (currSun.equals("星期日")) {
c.setTime(date);
c.add(Calendar.DAY_OF_MONTH, 1);
date = c.getTime();
return getHolidayDate(date,c);
}
}
return date;
}
public static void main(String[] args) {
// 处理节假日
String httpArg = "20210505";
/*SimpleDateFormat f = new SimpleDateFormat("yyyyMMdd");
httpArg = f.format(new Date());*/
String jsonResult = HolidayUtil.request(httpArg);
// 0 上班 1周末 2节假日
if ("0".equals(jsonResult)) {
//return resultObject.getFailResult("上班");
System.out.println("0上班");
}
if ("1".equals(jsonResult)) {
//return resultObject.getFailResult("1周末");
System.out.println("1周末");
}
if ("2".equals(jsonResult)) {
//return resultObject.getFailResult("");
System.out.println("2节假日");
}
}
}