Maison >Java >javaDidacticiel >Comment calculer le nombre de jours ouvrables entre deux dates en Java ?

Comment calculer le nombre de jours ouvrables entre deux dates en Java ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-25 04:21:30602parcourir

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

Détermination des jours ouvrables entre des dates données en Java

En Java, le calcul du nombre de jours ouvrables (hors samedis et dimanches) entre deux dates peut être réalisé à l'aide de méthodes éprouvées .

Java 8 et au-delà :

Pour Java 8 et les versions ultérieures, l'exploitation des classes du package java.time simplifie cette tâche :

<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>

Pré-Java 8 :

Pour les versions antérieures à Java 8, l'approche suivante peut être utilisée :

<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>

Remarque importante : Les méthodes supposent que les dates de début et de fin sont exclusives, ce qui signifie qu'elles ne seront pas incluses dans le décompte.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn