当前位置: 首页 > 工具软件 > 节假日API > 使用案例 >

判断日期是否节假日api

贺高杰
2023-12-01

写了个定时任务,需要在节假日才执行,不是节假日就不执行,很显然适用cron表达式是无法单独完成的。这里用到了聚合数据api,需要注册一个开发账号,这个比较简单,就不贴出来了。

直接看代码:

    /**
     * 接口请求成功code值
     */
    private static final String SUCCESS_CODE = "Success";
    /**
     * 获取日期信息
     */
    private static final String GET_URL = "http://v.juhe.cn/calendar/day?key=11111113dcf96fdde94e21a193dfe5fe&date=";

    /**
     * 判断日期是否为节假日
     *
     * @param date
     * @return
     */
    public static boolean isHoliday(Date date) {
        JSONObject jsonObject = JSONObject.parseObject(HttpRequestUtil.sendGet(GET_URL + handlerDate(date)));
        System.out.println(jsonObject.toString());
        if (SUCCESS_CODE.equals(jsonObject.get("reason").toString())) {
            //拿到第一层result
            JSONObject result = JSONObject.parseObject(jsonObject.get("result").toString());
            //拿出数据层data
            JSONObject data = JSONObject.parseObject(result.get("data").toString());
            //如果holiday不为空并且 holiday有值 代表是节假日
            return StrUtil.isNotEmpty(data.get("holiday").toString());
        } else {
            throw new MyException("获取节假日接口出错:" + jsonObject.toJSONString());
        }
    }



    /**
     * 将日期2021-03-01
     * 转为2021-3-1
     *
     * @param date
     * @return
     */
    private static String handlerDate(Date date) {
        String dateStr = DateUtil.format(date, MyDateUtil.YYYY_MM_DD);
        StringBuilder stringBuilder = new StringBuilder();
        String[] array = dateStr.split("-");
        for (int i = 0; i < array.length; i++) {
            if (i + 1 == array.length) {
                stringBuilder.append(Integer.parseInt(array[i]));
            } else {
                stringBuilder.append(Integer.parseInt(array[i])).append("-");
            }
        }
        return stringBuilder.toString();
    }

传入的日期如果是节假日,那么获取holiday的字符串就不为空,如果传入的非节假日,获取holiday的字符串就是空

 类似资料: