200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 调用API查询全年工作日 周末 法定节假日 节假日调休补班数据

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

时间:2024-01-18 08:15:06

相关推荐

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

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

前言

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

API介绍

/holiday/get?size=500&year=,查询全年日历(含周末)

这个API是在知乎(/p/343863993)上看到的,官网是这个:/#/holiday

查询全年节假日、调休

这个API是在简书(/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、调用 /holiday/get?size=500&year= 查询全年日历(含周末)* 2、调用 https://timor.tech/api/holiday/year/ 查询全年节假日、调休*/public static ArrayList<HolidayVo> getAllHolidayByYear(String year) throws IOException {SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");ArrayList<HolidayVo> holidayVoList = new ArrayList<>();HashMap<String,HolidayVo> hashMap = new HashMap<>();//查询全年日历包含周末String allDayJson = HolidayUtil.get("/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*/@Datapublic class HolidayVo {private String data;//日期private String status;//状态:0工作日/1周末/2法定节假日/3节假日调休补班private String msg;//描述}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。