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

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

时间:2023-01-17 19:05:46浏览次数:58  
标签:java String Calendar 查找 date new calendar holiday 源码


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

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

业务场景:

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


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

主要解决问题

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

首先解决数据源问题:
谷咕咕这里用的是网上别人提供的接口,还是比较稳定的。而且用的人还是挺多的。
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获取节假日、工作日,存入数据库,查找指定日期前一天,后一天。_开发语言_02


数据库:

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,String,Calendar,查找,date,new,calendar,holiday,源码
From: https://blog.51cto.com/u_15601494/6017712

相关文章

  • java:日期转型将“2023-03-14 00:00:00“转为年月日
    java:日期转型将"2023-03-1400:00:00"转为年月日old="2023-03-1400:00:00"Datedate=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss").parse(old);old=newSimpleDateForm......
  • 06.Java方法
    Java方法何谓方法Java方法是语句的集合,它们在一起执行一个功能方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中被创建,在其他地方被引用设计......
  • java虚拟机日志跟踪相关设置
     GC详细日志简要分析:2023-01-17T14:16:23.810+0800:10233.942:[GC(AllocationFailure)2023-01-17T14:16:23.810+0800:10233.942:[DefNew:70396K->439K(78720K......
  • Spring Cloud Alibaba——Nacos Config统一配置中心源码解析
    前言配置文件想必大家都很熟悉,无论什么架构都离不开配置,虽然springboot已经大大简化了配置,但服务环境也好几个,管理配置起来还是很麻烦,并且每次改完配置都需要重启服务,naco......
  • Java并发编程
    1.并发与并行?并行(parallel):指在同一时刻,有多条指令在多个处理器上同时执行。所以无论从微观还是从宏观来看,二者都是一起执行的。并发(concurrency):指在同一时刻只能有......
  • java学习笔记
    键盘输入接收用户输入的数据,使用键盘输入语句来获取。Input.java,需要一个扫描器(对象)Scannerimportjava.util.Scanner;publicclassInput{publicstaticvoidm......
  • JavaWeb开发中在服务器常用命令集锦
    基本的lsmvmidir就不说了。一.后端部署1.1启动jar包#默认会将所有日志存放到一个当前目录中新建的nohup.out文件中nohupjava-jar-Duser.timezone=GMT+8ap......
  • Java反序列化-CommonsCollections1利用链分析
    前言学习Java基础语法也有1年多的时间了,Java安全基础也学了有半年了,期间通过ctf赛题学习过fastjson的反序列化并了解了其利用链,但并未深入学习并记录笔记。一直都说要赶......
  • Java基础-方法
    Java中分类一共四种类型无参无返回、无参带返回、有参无返回和有参带返回 1.无参无返回值得 publicstaticvoid(){...}2.无参带返回值publicstatic 数据类型()......
  • UI自动化Selenium的使用--Java语言
    1.Selenium的运行环境依赖于Java环境,Java环境分JDK和JRE,JDK就是JavaDevelopmentKit。简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。JRE是Java......