From 3cec83a7cac28801d6c86f73984d6af3044ef064 Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Thu, 8 Aug 2024 15:59:32 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E6=B7=BB=E5=8A=A0=E6=A0=B9=E6=8D=AE?= =?UTF-8?q?=E5=BC=80=E5=A7=8B=E6=97=A5=E6=9C=9F=E5=92=8C=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=97=A5=E6=95=B0=E8=AE=A1=E7=AE=97=E6=88=AA=E6=AD=A2=E6=97=A5?= =?UTF-8?q?=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/utils/WorkDaysUtils.java | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/WorkDaysUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/WorkDaysUtils.java index 4dc318d7a..8997f2ee6 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/WorkDaysUtils.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/WorkDaysUtils.java @@ -15,6 +15,46 @@ public class WorkDaysUtils { private static final Map DAYS_IN_YEARS = new HashMap<>(); + /** + * 根据开始日期和工作日数计算截止日期 + * + * @param startDate 开始日期 + * @param workDays 工作日数 + * @return 截止日期 + */ + public static Date calculateEndDate(Date startDate, int workDays) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(startDate); + // 获取开始日期的年份 + int startYear = getYear(startDate); + //开始日期年份天 + Integer[] daysArray = daysInYear(startYear); + int startIndex = getDayOfYearIndex(startDate); + int endIndex = startIndex; + // 循环找到指定的工作日数 + while (workDays > 0) { + // 检查当前日期是否是工作日 + if (daysArray[endIndex] == 0) { + workDays--; + } + // 结束条件:工作日数为零 + if (workDays <= 0) { + break; + } + // 移动到下一天 + endIndex++; + // 如果移动到下一年 + if (endIndex >= daysArray.length) { + startYear++; + daysArray = daysInYear(startYear); + endIndex = 0; + } + } + // 设置截止日期 + calendar.set(Calendar.DAY_OF_YEAR, endIndex + 1); // +1 因为 Calendar.DAY_OF_YEAR 从 1 开始 + return calendar.getTime(); + } + /** * 计算两个日期之间的工作日天数 *