Heim  >  Artikel  >  Java  >  Wie berechnet man die Anzahl der Werktage zwischen zwei Daten in Java?

Wie berechnet man die Anzahl der Werktage zwischen zwei Daten in Java?

Barbara Streisand
Barbara StreisandOriginal
2024-10-25 04:21:30520Durchsuche

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

Ermitteln der Werktage zwischen bestimmten Daten in Java

In Java kann die Berechnung der Anzahl der Werktage (außer Samstage und Sonntage) zwischen zwei Daten mit bewährten Methoden erfolgen .

Java 8 und höher:

Für Java 8 und spätere Versionen vereinfacht die Nutzung von Klassen aus dem java.time-Paket diese Aufgabe:

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

Vor Java 8:

Für Versionen vor Java 8 kann der folgende Ansatz verwendet werden:

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

Wichtiger Hinweis: Die Methoden gehen davon aus, dass das Start- und Enddatum exklusiv sind, das heißt, sie werden nicht in die Zählung einbezogen.

Das obige ist der detaillierte Inhalt vonWie berechnet man die Anzahl der Werktage zwischen zwei Daten in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn