LocalDate.isBefore în Java

Compară două date: isBefore spune dacă data e mai devreme, isAfter dacă e mai târziu decât cealaltă.

Sintaxă
boolean isBefore(ChronoLocalDate alta)
boolean isAfter(ChronoLocalDate alta)
boolean isEqual(ChronoLocalDate alta)

Ce face LocalDate.isBefore

a.isBefore(b) este true dacă a este strict înaintea lui b. a.isAfter(b) este true dacă a este strict după b. Pentru aceeași zi, ambele dau false; pentru egalitate folosește isEqual sau equals.

Pentru „între două date, inclusiv capetele” combini condițiile: !d.isBefore(start) && !d.isAfter(sfarsit). LocalDate are și compareTo, folosit la sortare.

Parametri

Parametru Descriere
alta Data cu care se compară. Nu poate fi null (aruncă NullPointerException).

Ce returnează

true sau false.

Exemple

Exemplul 1: Termen depășit sau nu

import java.time.LocalDate;

public class Main {
    public static void main(String[] args) {
        LocalDate azi = LocalDate.of(2026, 10, 19);
        LocalDate[] termene = {LocalDate.of(2026, 10, 10), LocalDate.of(2026, 10, 19), LocalDate.of(2026, 11, 5)};
        for (LocalDate t : termene) {
            String stare;
            if (t.isBefore(azi)) {
                stare = "depășit";
            } else if (t.isAfter(azi)) {
                stare = "în viitor";
            } else {
                stare = "azi!";
            }
            System.out.println(t + ": " + stare);
        }
    }
}

Rezultat

2026-10-10: depășit
2026-10-19: azi!
2026-11-05: în viitor

Exemplul 2: Este data în perioada de vacanță?

„Nu înainte de start și nu după sfârșit” include ambele capete ale intervalului.

import java.time.LocalDate;

public class Main {
    static boolean inInterval(LocalDate d, LocalDate start, LocalDate sfarsit) {
        return !d.isBefore(start) && !d.isAfter(sfarsit);
    }

    public static void main(String[] args) {
        LocalDate start = LocalDate.of(2026, 12, 20);
        LocalDate sfarsit = LocalDate.of(2027, 1, 7);
        for (String s : new String[] {"2026-12-19", "2026-12-20", "2027-01-01", "2027-01-07", "2027-01-08"}) {
            LocalDate d = LocalDate.parse(s);
            System.out.println(d + " în vacanță? " + inInterval(d, start, sfarsit));
        }
    }
}

Rezultat

2026-12-19 în vacanță? false
2026-12-20 în vacanță? true
2027-01-01 în vacanță? true
2027-01-07 în vacanță? true
2027-01-08 în vacanță? false

Greșeli frecvente

  • Folosești isBefore când vrei „înainte sau în aceeași zi”. isBefore este strict; scrie !a.isAfter(b).
  • Compari date cu < sau >. Operatorii nu funcționează pe obiecte; folosește aceste metode sau compareTo.

Comenzi înrudite

  • LocalDate: Clasa pentru o dată calendaristică fără oră și fără fus orar: an, lună, zi. Obiectele ei nu se pot modifica.
  • LocalDate.datesUntil: Returnează un Stream cu toate datele de la această dată până la una de sfârșit (fără ea), zi cu zi sau cu un pas.
  • Period.between: Calculează perioada dintre două date în ani, luni și zile; getYears, getMonths, getDays citesc fiecare parte.