提供源码:java获取节假日、工作日,存入数据库,查找指定日期前一天,后一天。

提供源码:java获取节假日、工作日,存入数据库,查找指定日期前一天,后一天。

码云地址:
https://gitee.com/guyuanman/holiday

业务场景:

提供源码:java获取节假日、工作日,存入数据库,查找指定日期前一天,后一天。_第1张图片
好多公司的业务在处理的时候,会面临合同规定的日期“碰上”节假日,那么工作人员就会根据当年的日历,对合同日期进行顺延或者提前到最近的工作日。

主要解决问题

  • 获取指定年份的节假日和工作日信息
  • 查找指定日期前一天,后一天

首先解决数据源问题:
谷咕咕这里用的是网上别人提供的接口,还是比较稳定的。而且用的人还是挺多的。
api文档,可以根据自己需要提取
http://timor.tech/api/holiday/

/**
     * 添加指定年限的节假日,包括周末。
     * @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<String> entity = new HttpEntity<String>("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<String,Object> map= (Map) object;
            Map<String,Object> mapHoliday= (Map) map.get("holiday");
            Holiday holidayEntry=new Holiday();
            for (Map.Entry<String,Object> entry:mapHoliday.entrySet()){
                Map<String,Object> mapValue=(Map<String, Object>)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();
        }
    }

查找指定日期前的一个工作日,或者后一个工作日。

/**
     * 获得参数日期的前一天
     * @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
相关接口和测试类可以自己查看。
提供源码:java获取节假日、工作日,存入数据库,查找指定日期前一天,后一天。_第2张图片
数据库:

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
)

你可能感兴趣的:(java,日期,java,开发语言)