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
Libérer: 2024-10-25 04:21:30
original
599 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal