LocalDate.getYear în Java

Citesc părțile unei date: anul (getYear), luna ca Month (getMonth) și ziua din lună (getDayOfMonth).

Sintaxă
int getYear()
Month getMonth()
int getMonthValue()
int getDayOfMonth()

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() == 10 nu compilează. Folosește getMonthValue() == 10 sau getMonth() == 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.