首页  >  文章  >  Java  >  如何用Java计算两个日期之间的工作日数?

如何用Java计算两个日期之间的工作日数?

Barbara Streisand
Barbara Streisand原创
2024-10-25 04:21:30520浏览

How to Calculate the Number of Business Days Between Two Dates in Java?

在 Java 中确定给定日期之间的工作日

在 Java 中,计算两个日期之间的工作日数(不包括星期六和星期日)可以使用经过验证的方法来实现.

Java 8 及更高版本:

对于 Java 8 及更高版本,利用 java.time 包中的类可以简化此任务:

<code class="java">import java.time.LocalDate;
import java.time.temporal.ChronoUnit;

public class BusinessDaysCalculator {

    public static int getWorkingDaysBetweenTwoDates(LocalDate startDate, LocalDate endDate) {
        return (int) ChronoUnit.DAYS.between(startDate, endDate) - getWeekends(startDate, endDate);
    }

    private static int getWeekends(LocalDate startDate, LocalDate endDate) {
        return (int) Math.floor(ChronoUnit.DAYS.between(startDate, endDate) / 7) * 2;
    }
}</code>

Java 8 之前的版本:

对于 Java 8 之前的版本,可以使用以下方法:

<code class="java">import java.util.Calendar;

public class BusinessDaysCalculator {

    public static int getWorkingDaysBetweenTwoDates(Date startDate, Date endDate) {
        Calendar startCal = Calendar.getInstance();
        startCal.setTime(startDate);        

        Calendar endCal = Calendar.getInstance();
        endCal.setTime(endDate);

        int workDays = 0;

        if (startCal.getTimeInMillis() == endCal.getTimeInMillis()) {
            return 0;
        }
    
        if (startCal.getTimeInMillis() > endCal.getTimeInMillis()) {
            startCal.setTime(endDate);
            endCal.setTime(startDate);
        }

        do {
            startCal.add(Calendar.DAY_OF_MONTH, 1);
            if (startCal.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY && startCal.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY) {
                ++workDays;
            }
        } while (startCal.getTimeInMillis() < endCal.getTimeInMillis()); 

        return workDays;
    }
}</code>

重要提示: 这些方法假设开始日期和结束日期是互斥的,这意味着它们不会包含在计数中。

以上是如何用Java计算两个日期之间的工作日数?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn