Javaで週末を除いた日数の差を取得する方法


  1. 日付の差を計算する方法: Java 8以降では、java.time.LocalDateクラスを使用して日付の差を計算することができます。以下のコードは、2つの日付間の日数の差を取得します。
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
public class Main {
    public static void main(String[] args) {
        LocalDate startDate = LocalDate.of(2024, 1, 1);
        LocalDate endDate = LocalDate.of(2024, 1, 31);

        long difference = ChronoUnit.DAYS.between(startDate, endDate);
        System.out.println("日数の差: " + difference);
    }
}
  1. 週末を除外する方法: 上記のコードでは、週末を考慮せずに日数の差を計算しています。しかし、週末を除外するためには追加の処理が必要です。以下のコードは、週末を除いた日数の差を取得する方法を示しています。
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
public class Main {
    public static void main(String[] args) {
        LocalDate startDate = LocalDate.of(2024, 1, 1);
        LocalDate endDate = LocalDate.of(2024, 1, 31);

        long difference = countBusinessDays(startDate, endDate);
        System.out.println("週末を除いた日数の差: " + difference);
    }

    public static long countBusinessDays(LocalDate startDate, LocalDate endDate) {
        long days = ChronoUnit.DAYS.between(startDate, endDate);
        long businessDays = 0;

        for (int i = 0; i <= days; i++) {
            LocalDate date = startDate.plusDays(i);
            if (date.getDayOfWeek() != DayOfWeek.SATURDAY && date.getDayOfWeek() != DayOfWeek.SUNDAY) {
                businessDays++;
            }
        }

        return businessDays;
    }
}

上記のコードでは、countBusinessDaysメソッドを使用して週末を除いた日数の差を計算しています。countBusinessDaysメソッドでは、指定された期間内の各日付が週末でない場合にのみ、businessDaysのカウントをインクリメントします。

以上がJavaで週末を除いた日数の差を取得する方法です。これを参考にして、目的に応じたコードを作成してみてください。