判断当前的日期是否是节假日、调休、补班、工作日、双休日

首先要想知道当前日期是什么日子的话得知道本年所有节日、调休补班的具体日期,那么问题来了要抱着日历挨个数吗?肯定不需要啊,在每年的10月或者11月国务院会发布第二年的节假日和调休补班的日期,只需要国务院的官网搜索“20xx年节假日安排”就行;

有了日期就要用代码实现了

实现该功能的基本原理:

将节假日调休的日期和补班的日期写入配置文件中,再分别用两个集合将节假日调休日期和补班的日期存储起来(不用集合直接存储是为了代码的解耦);获取当前日期后判断当前日期在集合中是否存在,如果节假日调休集合中存在当前日期返回0、如何补班集合中存在当前日期返回1。

那么如何判断当前是工作日还是双休呢?

java中有日期时间对象类Calendar

这里详细介绍了Calendar:Java 中Calendar类的简介说明_qq_25073223的博客-CSDN博客

它可以判断当前是星期几并返回返回一个正数,需要注意的是

1——星期日、2——星期一、3——星期二、4——星期三、5——星期四、6——星期五、7——星期六

返回值不是当前星期一就返回1。

这样可以通过Calendar得到返回值判断当前是工作日还是双休日了,当是工作日是返回2、是双休日的时候返回3。

通过返回值就可以获取当前的日期是什么日子了,

当是这样写需要每年都要更新一遍配置文件中的日期,所以这些也可以写成一个动人的但是比较麻烦,所以我们可以直接使用网上一个开源的接口http://tool.bitefu.net/jiari/

在网上可以查到很多好用的工具类如:

 private 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 int date(String httpArg) {
        // 处理节假日

        String jsonResult = request(httpArg);

        // 0 上班 1周末 2节假日

        if ("0".equals(jsonResult)) {
            return 0;
        }

        if ("1".equals(jsonResult)) {
            return 1;
        }

        if ("2".equals(jsonResult)) {
            return 2;
        }
        return 0;
    }

该接口中返回的是 工作日对应结果为 0, 休息日对应结果为 1, 节假日对应的结果为 2;

直接调用工具类.date(日期字符串)通过返回值就可以完善业务逻辑了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值