ホームページ  >  記事  >  Java  >  Javaで2つの日付の間の営業日数を計算するにはどうすればよいですか?

Javaで2つの日付の間の営業日数を計算するにはどうすればよいですか?

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 では、実証済みの方法を使用して 2 つの日付間の営業日数 (土曜日と日曜日を除く) を計算できます。 .

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で2つの日付の間の営業日数を計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。