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

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

Patricia Arquette
Patricia Arquetteoriginal
2024-10-25 17:36:42500parcourir

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

Calculer le nombre de jours de la semaine entre deux dates en Java

Pour ceux qui recherchent un extrait de code Java pour calculer le nombre de jours ouvrables (hors week-end) entre deux dates, une réponse populaire de 2011 proposait une solution utilisant la classe Calendar. Malgré l'introduction ultérieure par Java 8 de fonctionnalités modernes de gestion de la date et de l'heure via le package java.time, le code suivant montre comment réaliser ce calcul à l'aide de l'API Calendar :

<code class="java">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;

    //Return 0 if start and end are the same
    if (startCal.getTimeInMillis() == endCal.getTimeInMillis()) {
        return 0;
    }
    
    if (startCal.getTimeInMillis() > endCal.getTimeInMillis()) {
        startCal.setTime(endDate);
        endCal.setTime(startDate);
    }

    do {
       //excluding start date
        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()); //excluding end date

    return workDays;
}</code>

Notez que cette solution suit une approche "continue". " approche de comptage, excluant à la fois les dates de début et de fin elles-mêmes. Par exemple, si le début et la fin sont respectivement un lundi et un vendredi, la méthode renverra 4.

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