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

4 篇文章 0 订阅

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

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

业务场景:

在这里插入图片描述
好多公司的业务在处理的时候,会面临合同规定的日期“碰上”节假日,那么工作人员就会根据当年的日历,对合同日期进行顺延或者提前到最近的工作日。

主要解决问题

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

首先解决数据源问题:
谷咕咕这里用的是网上别人提供的接口,还是比较稳定的。而且用的人还是挺多的。
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
相关接口和测试类可以自己查看。
在这里插入图片描述
数据库:

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
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谷咕咕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值