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节假日");
		} 
	}

}

  

posted @ 2021-05-06 13:41  喜欢22度的晴天  阅读(754)  评论(0编辑  收藏  举报