Java >> Java tutorial >  >> Tag >> while

Spring weekender over, mens du tilføjer dage til LocalDate i Java 8

1. Oversigt

I denne øvelse vil vi kort se på algoritmen til at springe weekender over, mens vi tilføjer dage til en LocalDate instans i Java 8.

Vi gennemgår også algoritmen til at trække dage fra LocalDate objekt, mens du springer weekender over.

2. Tilføjelse af dage

I denne metode bliver vi ved med at tilføje en dag til LocalDate objekt, indtil vi har tilføjet det nødvendige antal dage. Mens vi tilføjer en dag, kontrollerer vi, om dagen for den nye LocalDate eksempel er en lørdag eller en søndag .

Hvis checken returnerer sand , så øger vi ikke tælleren for antallet af tilføjede dage indtil det tidspunkt. Men hvis den aktuelle dag er en hverdag, øger vi tælleren.

På denne måde bliver vi ved med at tilføje dage, indtil tælleren er lig med antallet af dage, der skal tilføjes:

public static LocalDate addDaysSkippingWeekends(LocalDate date, int days) {
    LocalDate result = date;
    int addedDays = 0;
    while (addedDays < days) {
        result = result.plusDays(1);
        if (!(result.getDayOfWeek() == DayOfWeek.SATURDAY || result.getDayOfWeek() == DayOfWeek.SUNDAY)) {
            ++addedDays;
        }
    }
    return result;
}

I ovenstående kode bruger vi plusDays() metoden LocalDate objekt for at tilføje dage til resultatet objekt. Vi øger addedDays  kun variabel, når dagen er en hverdag. Når variablen addedDays er lig med dage variabel, stopper vi med at tilføje en dag til resultatet LocalDate objekt.

3. Fratræk af dage

På samme måde kan vi trække dage fra LocalDate objekt ved hjælp af minusDays() metode, indtil vi har trukket det nødvendige antal dage fra.

For at opnå dette beholder vi en tæller for antallet af dage fratrukket, som kun øges, når den resulterende dag er en ugedag :

public static LocalDate subtractDaysSkippingWeekends(LocalDate date, int days) {
    LocalDate result = date;
    int subtractedDays = 0;
    while (subtractedDays < days) {
        result = result.minusDays(1);
        if (!(result.getDayOfWeek() == DayOfWeek.SATURDAY || result.getDayOfWeek() == DayOfWeek.SUNDAY)) {
            ++subtractedDays;
        }
    }
    return result;
}

Fra ovenstående implementering kan vi se, at subtractedDays  øges kun, når resultatet LocalDate objekt er en hverdag. Ved at bruge while-løkken trækker vi dage indtil subtractedDays er lig med dagene variabel.

4. Konklusion

I denne korte artikel har vi se på algoritmer til at lægge dage til og trække dage fra LocalDate objekt springer weekender over. Desuden kiggede vi på deres implementeringer i Java.

Som altid er den fulde kildekode for arbejdseksemplerne tilgængelig på GitHub.


Java tag