LocalDate.plusDays în Java

Returnează o dată nouă mutată cu un număr de zile înainte (plusDays) sau înapoi (minusDays).

Sintaxă
LocalDate plusDays(long zile)
LocalDate minusDays(long zile)

Ce face LocalDate.plusDays

plusDays(n) adună n zile la dată, iar minusDays(n) le scade. Trecerea peste sfârșitul lunii sau al anului este calculată corect: 30 decembrie plus 5 zile este 4 ianuarie anul următor.

Ambele metode returnează o dată nouă; originalul nu se schimbă. Un număr negativ inversează sensul: plusDays(-3) este același lucru cu minusDays(3). Există și plusWeeks, plusYears și perechile lor minus….

Parametri

Parametru Descriere
zile Numărul de zile de adunat sau de scăzut. Poate fi negativ.

Ce returnează

Un LocalDate nou. Aruncă DateTimeException doar dacă rezultatul iese din intervalul de ani acceptat.

Exemple

Exemplul 1: Termen de plată și data emiterii

import java.time.LocalDate;

public class Main {
    public static void main(String[] args) {
        LocalDate emitere = LocalDate.of(2026, 12, 20);
        LocalDate scadenta = emitere.plusDays(15);
        LocalDate reminder = scadenta.minusDays(3);

        System.out.println("Factura emisă:  " + emitere);
        System.out.println("Scadența:       " + scadenta);
        System.out.println("Trimite reminder: " + reminder);
    }
}

Rezultat

Factura emisă:  2026-12-20
Scadența:       2027-01-04
Trimite reminder: 2027-01-01

Exemplul 2: Următoarele zile lucrătoare

Sărim peste sâmbătă și duminică adunând câte o zi și verificând getDayOfWeek().

import java.time.DayOfWeek;
import java.time.LocalDate;

public class Main {
    public static void main(String[] args) {
        LocalDate zi = LocalDate.of(2026, 10, 22);   // joi
        int gasite = 0;
        while (gasite < 4) {
            zi = zi.plusDays(1);
            DayOfWeek z = zi.getDayOfWeek();
            if (z != DayOfWeek.SATURDAY && z != DayOfWeek.SUNDAY) {
                System.out.println(zi + " " + z);
                gasite++;
            }
        }
    }
}

Rezultat

2026-10-23 FRIDAY
2026-10-26 MONDAY
2026-10-27 TUESDAY
2026-10-28 WEDNESDAY

Exemplul 3: Ultimele 7 zile

import java.time.LocalDate;

public class Main {
    public static void main(String[] args) {
        LocalDate azi = LocalDate.of(2026, 3, 3);
        for (int i = 6; i >= 0; i--) {
            System.out.print(azi.minusDays(i).getDayOfMonth() + " ");
        }
        System.out.println();
        System.out.println("Acum o săptămână: " + azi.minusDays(7));
    }
}

Rezultat

25 26 27 28 1 2 3 
Acum o săptămână: 2026-02-24

Greșeli frecvente

  • Scrii data.plusDays(1); fără atribuire și te aștepți ca data să se schimbe.
  • Aduni zile ca să obții „peste o lună” (plusDays(30)). Lunile au 28-31 de zile; pentru luni folosește plusMonths.

Comenzi înrudite

  • LocalDate.plusMonths: Adaugă un număr de luni; dacă ziua nu există în luna rezultată, se folosește ultima zi a acelei luni.
  • LocalDate.getDayOfWeek: Returnează ziua săptămânii pentru dată, ca valoare a enumerării DayOfWeek (MONDAY … SUNDAY).
  • Period: O perioadă de calendar în ani, luni și zile (P1Y2M3D); se adună la date ținând cont de lungimea lunilor.
  • ChronoUnit: Enumerarea unităților de timp (DAYS, MONTHS, HOURS…); ChronoUnit.DAYS.between(a, b) numără zilele dintre două date.