调用免费API查询全年工作日、周末、法定节假日、节假日调休补班数据

您所在的位置:网站首页 周六补班算工作日吗 调用免费API查询全年工作日、周末、法定节假日、节假日调休补班数据

调用免费API查询全年工作日、周末、法定节假日、节假日调休补班数据

2023-06-10 15:17| 来源: 网络整理| 查看: 265

调用免费API查询全年工作日、周末、法定节假日、节假日调休补班数据

前言   日常开发中,难免会用到判断今天是工作日、周末、法定节假日、节假日调休补班做一些业务处理,例如:仅在上班时间给用户推送消息。本文记录调用免费API查询全年工作日、周末、法定节假日、节假日调休补班数据

API介绍   https://api.apihubs.cn/holiday/get?size=500&year=2021,查询全年日历(含周末)

这个API是在知乎(https://zhuanlan.zhihu.com/p/343863993)上看到的,官网是这个:http://www.apihubs.cn/#/holiday

查询全年节假日、调休

这个API是在简书(https://www.jianshu.com/p/1e05e72b41fd)上看到的,官网是这个:http://timor.tech/api/holiday

```java /** * 节假日工具类 */ public class HolidayUtil { /** * 发送get请求 */ private static String get(String url){ StringBuilder inputLine = new StringBuilder(); String read; try { HttpURLConnection urlConnection = (HttpURLConnection) new URL(url).openConnection(); urlConnection.setReadTimeout(30 * 1000); urlConnection.setConnectTimeout(30 * 1000); urlConnection.setRequestProperty("Charset", "UTF-8"); urlConnection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36)"); BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), StandardCharsets.UTF_8)); while ((read = in.readLine()) != null) { inputLine.append(read); } in.close(); } catch (IOException e) { e.printStackTrace(); } return inputLine.toString(); } /** * 调用免费API查询全年工作日、周末、法定节假日、节假日调休补班数据 * 1、调用 https://api.apihubs.cn/holiday/get?size=500&year=2021 查询全年日历(含周末) * 2、调用 https://timor.tech/api/holiday/year/2021 查询全年节假日、调休 */ public static ArrayList getAllHolidayByYear(String year) throws IOException { SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd"); ArrayList holidayVoList = new ArrayList(); HashMap hashMap = new HashMap(); //查询全年日历包含周末 String allDayJson = HolidayUtil.get("https://api.apihubs.cn/holiday/get?size=500&year="+year); ObjectMapper mapper = new ObjectMapper(); Map allDayMap = mapper.readValue(allDayJson,Map.class); Map allDayData = (Map)allDayMap.get("data"); List allDayDataList = (List)allDayData.get("list"); allDayDataList.forEach((value) -> { HolidayVo holidayVo = new HolidayVo(); Map value1 = (Map) value; String YEAR = value1.get("year").toString(); String MONTH = value1.get("month").toString().replace(YEAR,""); String DAY = value1.get("date").toString().replace(YEAR+MONTH,""); holidayVo.setData(YEAR + "-" + MONTH + "-" + DAY); String STATUS = "0"; String msg = "工作日"; if("1".equals(value1.get("weekend").toString())){ STATUS = "1"; msg = "周末"; } holidayVo.setStatus(STATUS); holidayVo.setMsg(msg); hashMap.put(holidayVo.getData(),holidayVo); }); //查询全年节假日、调休 String holidayJson = HolidayUtil.get("https://timor.tech/api/holiday/year/"+year + "/"); Map holidayMap = mapper.readValue(holidayJson,Map.class); LinkedHashMap holidayList = (LinkedHashMap)holidayMap.get("holiday"); holidayList.forEach((key,value) -> { HolidayVo holidayVo = new HolidayVo(); Map value1 = (Map) value; String dateTime = value1.get("date").toString(); holidayVo.setData(dateTime); String STATUS = "2"; String msg = "法定节假日("+value1.get("name").toString()+")"; if(value.toString().contains("调休")){ STATUS = "3"; msg = "节假日调休补班("+value1.get("target").toString()+")"; } holidayVo.setStatus(STATUS); holidayVo.setMsg(msg); hashMap.replace(holidayVo.getData(),holidayVo); }); for (String key : hashMap.keySet()) { holidayVoList.add(hashMap.get(key)); } //排序 holidayVoList.sort((a,b)->{ try { return sf.parse(a.getData()).compareTo(sf.parse(b.getData())); } catch (ParseException e) { e.printStackTrace(); } return 1; }); return holidayVoList; } } ```/** * 节假日Vo */ @Data public class HolidayVo { private String data;//日期 private String status;//状态:0工作日/1周末/2法定节假日/3节假日调休补班 private String msg;//描述 }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3