# Holiday **Repository Path**: guyuanman/holiday ## Basic Information - **Project Name**: Holiday - **Description**: java获取节假日、工作日,存入数据库,查找指定日期前一天,后一天,springboot,mybatis - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2022-06-16 - **Last Updated**: 2023-10-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Holiday #### 介绍 java获取节假日、工作日,存入数据库,查找指定日期前一天,后一天,springboot,mybatis 1. # 提供源码:java获取节假日、工作日,存入数据库,查找指定日期前一天,后一天。 ### 业务场景: ![在这里插入图片描述](https://img-blog.csdnimg.cn/3cdddd411f1e4f8daed553476c58f7ed.png) 好多公司的业务在处理的时候,会面临合同规定的日期“碰上”节假日,那么工作人员就会根据当年的日历,对合同日期进行顺延或者提前到最近的工作日。 ### 主要解决问题 - 获取指定年份的节假日和工作日信息 - 查找指定日期前一天,后一天 **首先解决数据源问题:** 谷咕咕这里用的是网上别人提供的接口,还是比较稳定的。而且用的人还是挺多的。 api文档,可以根据自己需要提取 http://timor.tech/api/holiday/ ```java /** * 添加指定年限的节假日,包括周末。 * @param year */ @Override public void addHolidayAndWeekends(String year) { try { RestTemplate restTemplate = new RestTemplate(); HttpHeaders headers = new HttpHeaders(); headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON)); headers.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); HttpEntity entity = new HttpEntity("parameters", headers); Object response = restTemplate.exchange("http://timor.tech/api/holiday/year/"+year+"?type=Y&week=Y", HttpMethod.GET,entity,Object.class); Object object= ((ResponseEntity) response).getBody(); Map map= (Map) object; Map mapHoliday= (Map) map.get("holiday"); Holiday holidayEntry=new Holiday(); for (Map.Entry entry:mapHoliday.entrySet()){ Map mapValue=(Map)entry.getValue(); Boolean holiday= (Boolean) mapValue.get("holiday"); String name= (String) mapValue.get("name"); Integer wage= (Integer) mapValue.get("wage"); String date = mapValue.get("date").toString(); holidayEntry.setHoliday(holiday); holidayEntry.setHolidayName(name); holidayEntry.setHolidayWage(wage); holidayEntry.setHolidayDate(date); //这里就是存入数据库的操作了 holidayMapper.insert(holidayEntry); } } catch (Exception ex) { ex.printStackTrace(); } } ``` 查找指定日期前的一个工作日,或者后一个工作日。 ```java /** * 获得参数日期的前一天 * @param dateString * @return String */ String dayBefore(String dateString) throws ParseException { Calendar calendar = Calendar.getInstance(); Date date=null; date = new SimpleDateFormat("yyyy-MM-dd").parse(dateString); calendar.setTime(date); int day = calendar.get(Calendar.DATE); calendar.set(Calendar.DATE, day - 1); String dayBefore = new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime()); return dayBefore; } /** * 获得参数日期的后面的后一天 * @param dateString * @return String */ String dayAfter(String dateString) throws ParseException { Calendar calendar = Calendar.getInstance(); Date date=null; date = new SimpleDateFormat("yyyy-MM-dd").parse(dateString); calendar.setTime(date); int day = calendar.get(Calendar.DATE); calendar.set(Calendar.DATE, day + 1); String dayAfter = new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime()); System.out.println(dayAfter); return dayAfter; } ``` 相关代码可以直接下载谷咕咕的百度云,这里我也上传了。 链接:https://pan.baidu.com/s/1p8XWwtbLeF_XCRddzMDrVg 提取码:flbh 相关接口和测试类可以自己查看。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/64ea7f51cdd543a788204bc7cc6ca228.png) 数据库: ```sql CREATE TABLE Holiday ( HOLIDAY_DATE DATE not null PRIMARY KEY, IS_HOLIDAY VARCHAR(100) NULL, HOLIDAY_NAME varchar(100) NULL, HOLIDAY_WAGE INT(4) NULL, HOLIDAY_REST INT(4) NULL ) ``` #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)