diff --git a/signin/src/main/resources/application.yml b/signin/src/main/resources/application.yml index e75cc2c3..b5408a3a 100644 --- a/signin/src/main/resources/application.yml +++ b/signin/src/main/resources/application.yml @@ -1,5 +1,5 @@ spring: profiles: - active: prod - include: util-prod,common + active: dev + include: util-dev,common diff --git a/util/src/main/java/com/ccsens/util/cron/NatureConstant.java b/util/src/main/java/com/ccsens/util/cron/NatureConstant.java index 4b74c2dd..47a81a76 100644 --- a/util/src/main/java/com/ccsens/util/cron/NatureConstant.java +++ b/util/src/main/java/com/ccsens/util/cron/NatureConstant.java @@ -57,5 +57,6 @@ public class NatureConstant { public static final String WORKDAY_MONTH = "每月最后一个工作日"; public static final String WORKDAY_WEEK = "每周最后一个工作日"; + public static final String WORKDAY_YEAR = "每年最后一个工作日"; } diff --git a/util/src/main/java/com/ccsens/util/cron/NatureToDate.java b/util/src/main/java/com/ccsens/util/cron/NatureToDate.java index e3f0f041..4b688744 100644 --- a/util/src/main/java/com/ccsens/util/cron/NatureToDate.java +++ b/util/src/main/java/com/ccsens/util/cron/NatureToDate.java @@ -154,9 +154,11 @@ public class NatureToDate { //每周最后一个工作日 getLastWorkdayByWeek(taskDates,startDate, endDate); return taskDates; + }else if(StringUtil.isMatch(nature, NatureConstant.WORKDAY_YEAR)){ + getLastWorkdayByYear(taskDates,startDate, endDate); + return taskDates; } - return null; } @@ -197,6 +199,23 @@ public class NatureToDate { calendar.set(Calendar.DAY_OF_MONTH, 1); } } + /** + * 获取每年最后一个工作日 + */ + private static void getLastWorkdayByYear(List taskDates, Date startDate, Date endDate) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(startDate); + while (calendar.getTime().getTime() < endDate.getTime()) { + //获取开始时间 + Date start = calendar.getTime(); + int last = calendar.getActualMaximum(Calendar.DAY_OF_YEAR); + calendar.set(Calendar.DAY_OF_YEAR, last); + //获取当年最后一天 + Date end = calendar.getTime(); + getLastWorkday(taskDates,start,end); + calendar.add(Calendar.DAY_OF_YEAR, 1); + } + } /** * 获取指定时间范围内的最后一个工作日 diff --git a/util/src/test/java/com/ccsens/util/DateTest.java b/util/src/test/java/com/ccsens/util/DateTest.java index c782923a..b1e4c3de 100644 --- a/util/src/test/java/com/ccsens/util/DateTest.java +++ b/util/src/test/java/com/ccsens/util/DateTest.java @@ -153,7 +153,7 @@ public void isOverDay() { // 指定时间判断是否是双休日 Date s = new Date(1628148817000L); Date e = new Date(1633851217000L); - DateFormat df = new SimpleDateFormat("MM-dd"); + DateFormat df = new SimpleDateFormat("yy-MM-dd"); Calendar calendar = Calendar.getInstance(); calendar.setTime(s); while (calendar.getTime().getTime() < e.getTime()) { @@ -170,21 +170,33 @@ public void isOverDay() { // 指定时间判断是否是双休日 // calendar.set(Calendar.DAY_OF_MONTH, 1); +// System.out.println(df.format(calendar.getTime())); +// Date start = calendar.getTime(); +// calendar.add(Calendar.WEEK_OF_YEAR, 1); +// calendar.set(Calendar.DAY_OF_WEEK, 1); +// Date end = calendar.getTime(); +// //获取当月最后一个工作日 +// isHodliDays(taskDates,start,end); +// +// System.out.println(df.format(calendar.getTime())); +// calendar.add(Calendar.DAY_OF_MONTH, 1); +// System.out.println(df.format(calendar.getTime())); +// System.out.println("===================================="); System.out.println(df.format(calendar.getTime())); + + Date start = calendar.getTime(); - calendar.add(Calendar.WEEK_OF_YEAR, 1); - calendar.set(Calendar.DAY_OF_WEEK, 1); - Date end = calendar.getTime(); - //获取当月最后一个工作日 - isHodliDays(taskDates,start,end); + int last = calendar.getActualMaximum(Calendar.DAY_OF_YEAR); + calendar.set(Calendar.DAY_OF_YEAR, last); + Date end = calendar.getTime(); System.out.println(df.format(calendar.getTime())); - calendar.add(Calendar.DAY_OF_MONTH, 1); + calendar.add(Calendar.DAY_OF_YEAR, 1); System.out.println(df.format(calendar.getTime())); - System.out.println("===================================="); - -// System.out.println(df.format(calendar.getTime())); +// isHodliDays(taskDates,start,end); } System.out.println(taskDates); } + + } \ No newline at end of file