Ce face LocalDate.getYear
Un LocalDate se desface în părți cu aceste metode: getYear() dă anul ca int, getMonth() dă luna ca valoare a enumerării Month (OCTOBER), iar getDayOfMonth() dă ziua din lună (1-31).
Dacă vrei luna ca număr, folosește getMonthValue() (1-12) sau getMonth().getValue(). Mai există getDayOfYear() (1-366) și getDayOfWeek().
Ce returnează
getYear și getDayOfMonth returnează int; getMonth returnează Month.
Exemple
Exemplul 1: Părțile unei date
import java.time.LocalDate;
import java.time.Month;
public class Main {
public static void main(String[] args) {
LocalDate d = LocalDate.of(2026, 10, 19);
int an = d.getYear();
Month luna = d.getMonth();
int zi = d.getDayOfMonth();
System.out.println("An: " + an);
System.out.println("Lună: " + luna + " (numărul " + d.getMonthValue() + ")");
System.out.println("Zi: " + zi);
System.out.println("Ziua din an: " + d.getDayOfYear());
}
}
Rezultat
An: 2026
Lună: OCTOBER (numărul 10)
Zi: 19
Ziua din an: 292
Exemplul 2: Vârsta în ani împliniți
Scădem anii, apoi scădem încă unul dacă ziua de naștere din acest an nu a venit încă. (Period.between face același calcul mai simplu.)
import java.time.LocalDate;
public class Main {
static int varsta(LocalDate nastere, LocalDate azi) {
int ani = azi.getYear() - nastere.getYear();
boolean aTrecutZiua = azi.getMonthValue() > nastere.getMonthValue()
|| (azi.getMonth() == nastere.getMonth() && azi.getDayOfMonth() >= nastere.getDayOfMonth());
return aTrecutZiua ? ani : ani - 1;
}
public static void main(String[] args) {
LocalDate azi = LocalDate.of(2026, 10, 19);
System.out.println("Ana (2008-03-14): " + varsta(LocalDate.of(2008, 3, 14), azi));
System.out.println("Mihai (2008-11-02): " + varsta(LocalDate.of(2008, 11, 2), azi));
}
}
Rezultat
Ana (2008-03-14): 18
Mihai (2008-11-02): 17
Exemplul 3: Gruparea cheltuielilor pe luni
import java.time.LocalDate;
import java.time.Month;
import java.util.Map;
import java.util.TreeMap;
public class Main {
record Cheltuiala(LocalDate data, int lei) {}
public static void main(String[] args) {
Cheltuiala[] lista = {
new Cheltuiala(LocalDate.of(2026, 9, 3), 120),
new Cheltuiala(LocalDate.of(2026, 10, 1), 75),
new Cheltuiala(LocalDate.of(2026, 9, 28), 40),
new Cheltuiala(LocalDate.of(2026, 10, 15), 300),
};
Map<Month, Integer> peLuni = new TreeMap<>();
for (Cheltuiala c : lista) {
peLuni.merge(c.data().getMonth(), c.lei(), Integer::sum);
}
System.out.println(peLuni);
}
}
Rezultat
{SEPTEMBER=160, OCTOBER=375}
Greșeli frecvente
- Compari
getMonth()cu un număr:d.getMonth() == 10nu compilează. FoloseștegetMonthValue() == 10saugetMonth() == Month.OCTOBER. - Calculezi vârsta doar ca diferență de ani. Rezultatul este cu un an mai mare înainte de ziua de naștere; folosește
Period.between(nastere, azi).getYears().
Comenzi înrudite
LocalDate.getDayOfWeek: Returnează ziua săptămânii pentru dată, ca valoare a enumerării DayOfWeek (MONDAY … SUNDAY).Month: Enumerarea celor 12 luni (JANUARY = 1 … DECEMBER = 12), cu lungimea lunii și numele traduse.Period.between: Calculează perioada dintre două date în ani, luni și zile; getYears, getMonths, getDays citesc fiecare parte.LocalDate: Clasa pentru o dată calendaristică fără oră și fără fus orar: an, lună, zi. Obiectele ei nu se pot modifica.