java 过滤 节假日 和周六日
工具类先上
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节假日"); } } }