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); // 起始日期
        LocalDate endDate = LocalDate.of(2023, 8, 15); // 结束日期

        int workDayCount = calculateWorkDays(startDate, endDate);
        System.out.println("两个日期之间的工作日个数:" + workDayCount);
    }

    public static int calculateWorkDays(LocalDate startDate, LocalDate endDate) {
        if (startDate.isAfter(endDate)) {
            return 0;
        }
        
        if (isWorkDay(startDate)) {
            return 1 + calculateWorkDays(startDate.plusDays(1), endDate);
        } else {
            return calculateWorkDays(startDate.plusDays(1), endDate);
        }
    }

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


计算日期间隔,然后每7天取5天作为工作日。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7636077
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:用java写一个算工作日期的功能(考虑到节假日以及补班的情况)
  • 同时,你还可以查看手册:java-学习Java语言 - 描述Java编程语言的基本概念和特点的课程。-类和对象》描述了如何编写创建对象的类,以及如何创建和使用对象。-枚举类型 中的内容
  • 您还可以看一下 银文杰老师的小白Java入门系列:入门第一课【你的第一个Java程序】课程中的 时间和日期操作小节, 巩固相关知识点
  • 除此之外, 这篇博客: Java:获取两个区间内 为周几或星期符合 的所有日期,指定日期 使用周数计算出相对应的工作日中的 Java:获取两个区间内 为周几或星期符合 的所有日期,指定日期 使用周数计算出相对应的工作日 部分也许能够解决你的问题。
  • 以下回答由chatgpt基于相关博客总结生成:

    我可以使用Java中的java.time包来解决这个问题. 首先,我们需要引入LocalDateChronoUnit类来处理日期和计算日期之间的差异。

    以下是解决问题的具体步骤:

    1. 创建两个LocalDate对象,分别表示起始日期和结束日期。
    LocalDate startDate = LocalDate.of(2022, Month.JANUARY, 1);
    LocalDate endDate = LocalDate.of(2022, Month.JANUARY, 31);
    
    1. 使用ChronoUnit类的between方法计算日期之间的天数。
    long daysBetween = ChronoUnit.DAYS.between(startDate, endDate);
    
    1. 使用ChronoUnit类的between方法计算周末天数。
    long weekends = ChronoUnit.DAYS.between(startDate, endDate) / 7 * 2;
    
    1. 使用DayOfWeek类的getValue方法判断起始日期和结束日期是否为周末。
    if (startDate.getDayOfWeek().getValue() > 5) {
        weekends--;
    }
    
    if (endDate.getDayOfWeek().getValue() > 5) {
        weekends--;
    }
    
    1. 最后,计算工作日(不包括周末)的天数。
    long workingDays = daysBetween - weekends;
    

    这就是使用函数来计算两个日期之间的工作日间隔的解决方案。以下是完整的示例代码:

    import java.time.LocalDate;
    import java.time.Month;
    import java.time.temporal.ChronoUnit;
    
    public class WorkingDaysCalculator {
        public static void main(String[] args) {
            LocalDate startDate = LocalDate.of(2022, Month.JANUARY, 1);
            LocalDate endDate = LocalDate.of(2022, Month.JANUARY, 31);
    
            long daysBetween = ChronoUnit.DAYS.between(startDate, endDate);
            long weekends = ChronoUnit.DAYS.between(startDate, endDate) / 7 * 2;
    
            if (startDate.getDayOfWeek().getValue() > 5) {
                weekends--;
            }
    
            if (endDate.getDayOfWeek().getValue() > 5) {
                weekends--;
            }
    
            long workingDays = daysBetween - weekends;
            System.out.println("工作日间隔: " + workingDays);
        }
    }
    

    该代码将输出工作日间隔的天数。

    请注意,此解决方案不考虑节假日。如果要考虑节假日,需要创建一个节假日列表,并在计算工作日时排除这些节假日。

    以上是使用Java语言来计算两个日期之间的工作日间隔的解决方案。这种解决方案不需要循环,提供了一个简单而可靠的方法来计算工作日间隔。


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