1,引入hutool工具类jar
<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.8</version></dependency>
有关hutool的介绍参考其官网API:
/
2,公共方法如下:
判断是否为假日
public static Boolean isHoliday(String date){//freeday为本年的假日日期(我这里为的假期,手动导入)ArrayList<String> freedate = new ArrayList<String>(){{this.add("-01-01");this.add("-01-02");this.add("-01-03");this.add("-02-11");this.add("-02-12");this.add("-02-13");this.add("-02-14");this.add("-02-15");this.add("-02-16");this.add("-02-17");this.add("-04-03");this.add("-04-04");this.add("-04-05");this.add("-05-01");this.add("-05-02");this.add("-05-03");this.add("-05-04");this.add("-05-05");this.add("-06-12");this.add("-06-13");this.add("-06-14");this.add("-09-19");this.add("-09-20");this.add("-09-21");this.add("-10-01");this.add("-10-02");this.add("-10-03");this.add("-10-04");this.add("-10-05");this.add("-10-06");this.add("-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)){//判断其后一天是否为weekdayif (!isWeekday(yqsx)){adddays--;}else{yqsx = getMonday(yqsx);adddays--;}}}return yqsx;}}
如果觉得《java假期顺延求一个日期n天后的日期(排除节假日及周六周日)》对你有帮助,请点赞、收藏,并留下你的观点哦!