Java语言怎么实现判断一个日期之后多少个工作日后是什么日期

Java语言怎么实现判断一个日期之后多少个工作日后是什么日期?暂时不用考虑节假日,请问代码怎么写?难道说只能循环去数数么

效果如图

img

代码如下

import java.time.DayOfWeek;
import java.time.LocalDate;

public class Main {
    public static void main(String[] args) {
        LocalDate startDate = LocalDate.of(2023, 8, 1); // 指定起始日期
        int workDaysToAdd = 10; // 要添加的工作日数

        LocalDate endDate = calculateWorkDay(startDate, workDaysToAdd);
        System.out.println("工作日后的日期:" + endDate);
    }

    public static LocalDate calculateWorkDay(LocalDate startDate, int workDaysToAdd) {
        LocalDate resultDate = startDate;
        int addedWorkDays = 0;
        
        while (addedWorkDays < workDaysToAdd) {
            resultDate = resultDate.plusDays(1); // 向后加一天
            if (isWorkDay(resultDate)) { // 判断是否为工作日
                addedWorkDays++;
            }
        }
        
        return resultDate;
    }

    public static boolean isWorkDay(LocalDate date) {
        DayOfWeek dayOfWeek = date.getDayOfWeek();
        return dayOfWeek != DayOfWeek.SATURDAY && dayOfWeek != DayOfWeek.SUNDAY;
    }
}


可以直接用当前日期加上工作日,如果要算星期几,在对7取余即可

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/208384
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:Java实现对字符串转为日期格式后进行日期加减
  • 除此之外, 这篇博客: java后台:从多条数据 取距离现在最近的日期中的 从多条数据 取距离现在最近的日期 部分也许能够解决你的问题。
  • 以下回答由chatgpt基于相关博客总结生成:

    对于这个问题,可以通过使用Java的java.time包和一些自定义的方法来解决。

    首先,我们需要创建一个自定义的方法来判断一个日期是否为工作日。我们可以假设工作日是周一到周五,不包括法定假日。以下是一个简单的示例:

    import java.time.DayOfWeek;
    import java.time.LocalDate;
    import java.util.Arrays;
    import java.util.List;
    
    public class WorkdayUtils {
        // 定义法定假日列表
        private static final List<LocalDate> holidays = Arrays.asList(
            LocalDate.of(2022, 1, 1),  // 元旦
            LocalDate.of(2022, 2, 1),  // 春节
            LocalDate.of(2022, 2, 2),  // 春节
            // ... 其他法定假日
        );
    
        // 判断一个日期是否为工作日
        public static boolean isWorkday(LocalDate date) {
            // 判断是否为法定假日
            if (holidays.contains(date)) {
                return false;
            }
    
            // 判断是否为周六或周日
            DayOfWeek dayOfWeek = date.getDayOfWeek();
            return dayOfWeek != DayOfWeek.SATURDAY && dayOfWeek != DayOfWeek.SUNDAY;
        }
    }
    

    接下来,我们可以创建一个方法来计算一个给定日期之后的多少个工作日后的日期。这个方法可以使用循环来逐个判断日期是否为工作日,并相应地增加计数器。

    import java.time.LocalDate;
    
    public class Main {
        public static LocalDate calculateWorkday(LocalDate startDate, int numWorkdays) {
            LocalDate currentDate = startDate;
            int count = 0;
    
            while (count < numWorkdays) {
                currentDate = currentDate.plusDays(1);  // 增加一天
    
                if (WorkdayUtils.isWorkday(currentDate)) {
                    count++;
                }
            }
    
            return currentDate;
        }
    
        public static void main(String[] args) {
            LocalDate startDate = LocalDate.of(2022, 1, 1);  // 设置起始日期
            int numWorkdays = 10;  // 设置工作日的数量
    
            LocalDate result = calculateWorkday(startDate, numWorkdays);
    
            System.out.println("起始日期:" + startDate);
            System.out.println("工作日数量:" + numWorkdays);
            System.out.println("结果日期:" + result);
        }
    }
    

    通过调用calculateWorkday方法,我们可以得到起始日期之后的多少个工作日后的日期。

    如果你使用的是不同的日期格式,可以根据需要进行转换。此外,在WorkdayUtils的方法中,你可以根据实际情况自定义法定假日列表。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

来自GPT和我的想法:

java
Copy code
import java.time.DayOfWeek;
import java.time.LocalDate;

public class WorkdayCalculator {

    // 判断日期是否是工作日,排除周末
    private static boolean isWorkday(LocalDate date) {
        DayOfWeek dayOfWeek = date.getDayOfWeek();
        return dayOfWeek != DayOfWeek.SATURDAY && dayOfWeek != DayOfWeek.SUNDAY;
    }

    // 计算指定日期之后的n个工作日日期
    public static LocalDate calculateWorkdayAfter(LocalDate startDate, int numWorkdays) {
        LocalDate date = startDate;
        int workdaysRemaining = numWorkdays;

        while (workdaysRemaining > 0) {
            date = date.plusDays(1);
            if (isWorkday(date)) {
                workdaysRemaining--;
            }
        }

        return date;
    }

    public static void main(String[] args) {
        LocalDate startDate = LocalDate.of(2023, 7, 31); // 起始日期
        int numWorkdays = 5; // 需要计算的工作日数量

        LocalDate resultDate = calculateWorkdayAfter(startDate, numWorkdays);
        System.out.println("起始日期:" + startDate);
        System.out.println(numWorkdays + "个工作日后的日期:" + resultDate);
    }
}

在Java中实现判断一个日期之后多少个工作日后是什么日期,可以通过循环来逐个判断日期是否是工作日,并计数达到目标工作日数量。以下是一个示例代码:

在上面的示例代码中,isWorkday方法用于判断日期是否是工作日,排除周六和周日;calculateWorkdayAfter方法用于计算指定日期之后的n个工作日日期,通过循环逐个判断是否为工作日来实现。请注意这里的示例代码暂时不考虑节假日,如果需要考虑节假日,可以在isWorkday方法中增加对节假日的判断逻辑。