文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

JAVA判断当前时间是否为节假日、周末、工作日,调休日,不报错:IOException!

2023-08-17 10:07

关注

JAVA判断当前时间是否为节假日、周末、工作日

在这里插入图片描述

需求

有这么个需求,需要判断传的这个日期是否为节假日,周末,工作日,然后做剩下的操作。

话不多说,上代码

1.首先需要拿到节假日api

节假日API地址

2.拿到自己适用接口,如下:

参数:
1》year:格式“yyyy”,查询这一年的节假日

https://timor.tech/api/holiday/year

返回数据示例:

{    "code": 0,    "holiday": {        "01-01": {            "holiday": true,            "name": "元旦",            "wage": 3,            "date": "2023-01-01",            "rest": 1        },        "01-02": {            "holiday": true,            "name": "元旦",            "wage": 2,            "date": "2023-01-02",            "rest": 1        },        "01-21": {            "holiday": true,            "name": "除夕",            "wage": 3,            "date": "2023-01-21",            "rest": 2        },        ..........

截图如下

在这里插入图片描述

3.拿到项目中,编写成一个HolidayUtil 工具类,代码如下:

import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import com.bh4q.dict.util.DateUtil;import org.apache.commons.lang.StringUtils;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.URL;import java.net.URLConnection;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.*;public class HolidayUtil {    static Map> holiday =new HashMap<>();//假期    static Map> extraWorkDay =new HashMap<>();//调休日    //判断是否为节假日        public static String isWorkingDay(String time) throws ParseException {        Date parse = null;        //为空则返回当前时间        if (StringUtils.isNotBlank(time)){            SimpleDateFormat getYearFormat = new SimpleDateFormat("yyyy-MM-dd");            parse = getYearFormat.parse(time);        }else {            parse = new Date();        }        String newDate  = new SimpleDateFormat("yyyy").format(parse);        //判断key是否有参数年份        if(!holiday.containsKey(newDate)){            getYearHoliday(newDate);        }        //得到日期是星期几        Date date = DateUtil.formatStringToDate(time, false);        Calendar calendar = Calendar.getInstance();        calendar.setTime(date);        int weekday = DateUtil.getDayOfWeek(calendar);        //是否节假日        if(holiday.get(newDate).contains(time)){            return "2";        }else if(extraWorkDay.get(newDate).contains(time)){//是否为调休            return "0";        }else if(weekday == Calendar.SATURDAY || weekday == Calendar.FRIDAY){//是否为周末            return "1";        }else{            return "0";        }    }        public static String getYearHoliday(String date) throws ParseException {        //获取免费api地址        String httpUrl="https://timor.tech/api/holiday/year/"+date;        BufferedReader reader = null;        String result = null;        StringBuffer sbf = new StringBuffer();        try {            URL url = new URL(httpUrl);            URLConnection connection = url.openConnection();            //connection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");            connection.setRequestProperty("User-Agent", "Mozilla/4.76");            //使用Get方式请求数据            //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);                sbf.append("\r\n");            }            reader.close();            //字符串转json            JSONObject json = JSON.parseObject(sbf.toString());            //根据holiday字段获取jsonObject内容            JSONObject holiday = json.getJSONObject("holiday");            List hoList = new ArrayList<>();            List extraList = new ArrayList<>();            for (Map.Entry entry : holiday.entrySet()) {                String value = entry.getValue().toString();                JSONObject jsonObject = JSONObject.parseObject(value);                String hoBool = jsonObject.getString("holiday");                String extra = jsonObject.getString("date");                //判断不是假期后调休的班                if(hoBool.equals("true")){                    hoList.add(extra);                    HolidayUtil.holiday.put(date,hoList);                }else {                    extraList.add(extra);                    HolidayUtil.extraWorkDay.put(date,extraList);                }            }        } catch (Exception e) {            e.printStackTrace();        }        return result;    }}

4.调用工具类方法

  public static void main(String[] args) {   String date = "2023-07-12";         String yearHoliday = HolidayUtil.isWorkingDay(date);         System.out.println(yearHoliday);    }

打印结果:0


搞定收工

希望可以帮助到您

~打工人冲啊~

.

来源地址:https://blog.csdn.net/m0_50762431/article/details/131585664

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯