1,引入hutool工具类jar
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.8</version>
</dependency>
有关hutool的介绍参考其官网API:
https://www.hutool.cn/
2,公共方法如下:
判断是否为假日
public static Boolean isHoliday(String date){
//freeday为本年的假日日期(我这里为2021年的假期,手动导入)
ArrayList<String> freedate = new ArrayList<String>(){
{
this.add("2021-01-01");
this.add("2021-01-02");
this.add("2021-01-03");
this.add("2021-02-11");
this.add("2021-02-12");
this.add("2021-02-13");
this.add("2021-02-14");
this.add("2021-02-15");
this.add("2021-02-16");
this.add("2021-02-17");
this.add("2021-04-03");
this.add("2021-04-04");
this.add("2021-04-05");
this.add("2021-05-01");
this.add("2021-05-02");
this.add("2021-05-03");
this.add("2021-05-04");
this.add("2021-05-05");
this.add("2021-06-12");
this.add("2021-06-13");
this.add("2021-06-14");
this.add("2021-09-19");
this.add("2021-09-20");
this.add("2021-09-21");
this.add("2021-10-01");
this.add("2021-10-02");
this.add("2021-10-03");
this.add("2021-10-04");
this.add("2021-10-05");
this.add("2021-10-06");
this.add("2021-10-07");
}
};
if (freedate.contains(date)){
return true;
}else{
return false;
}
}
判断是否为weekday
public static Boolean isWeekday(String date){
return DateUtil.isWeekend(DateUtil.parse(date,"yyyy-MM-dd"));
}
public static String getMonday(String date){
if(isWeekday(getTomorrow(date))){
return getTomorrow(getTomorrow(date));
}else{
return getTomorrow(date);
}
}
求原日期明天
public static String getTomorrow(String date){
Date now = DateUtil.parse(date,"yyyy-MM-dd");
String tomorrow = DateUtil.offsetDay(now,1).toString().substring(0,10);
return tomorrow;
}
求原日期昨天
public static String getYesterday(String date){
Date now = DateUtil.parse(date,"yyyy-MM-dd");
String yesterday = DateUtil.offsetDay(now,-1).toString().substring(0,10);
return yesterday;
}
data参数为待求原日期,sum为求原日期几天日期
public static String getYqsx(String date,int sum) {
//先判断其是否为weekday,如果为weekday则直接从周一开始计算
if (isWeekday(date)){
//这里其实最好也判断一下它得n天后是不是holiday,如果是则再次排除后添加天数
//isHoliday(monday)
return DateUtil.offsetDay(DateUtil.parse(getMonday(date),"yyyy-MM-dd"),+4).toString().substring(0,10);
}else{
String yqsx = date;
int adddays = sum;
while (adddays > 0){
yqsx = getTomorrow(yqsx);
if (!isHoliday(yqsx)){
//判断其后一天是否为weekday
if (!isWeekday(yqsx)){
adddays--;
}else{
yqsx = getMonday(yqsx);
adddays--;
}
}
}
return yqsx;
}
}