Month în Java

Enumerarea celor 12 luni (JANUARY = 1 … DECEMBER = 12), cu lungimea lunii și numele traduse.

Sintaxă
import java.time.Month;

enum Month { JANUARY, FEBRUARY, …, DECEMBER }
int getValue()                 // 1 … 12
int length(boolean anBisect)
String getDisplayName(TextStyle stil, Locale limba)

Ce face Month

Month are câte o valoare pentru fiecare lună: JANUARY … DECEMBER. Se poate folosi direct în LocalDate.of(2026, Month.MARCH, 8) și se obține din getMonth().

getValue() dă numărul lunii (1-12), iar Month.of(n) face drumul invers. length(anBisect) spune câte zile are luna, maxLength() numărul maxim posibil. firstMonthOfQuarter() dă prima lună a trimestrului.

Numele în română se obțin cu getDisplayName(TextStyle.FULL, Locale.of("ro")): „ianuarie”, „februarie” etc.

Ce returnează

Valori ale enumerării; getValue() și length() returnează int.

Exemple

Exemplul 1: Lunile în română, cu numărul de zile

import java.time.Month;
import java.time.format.TextStyle;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        Locale ro = Locale.of("ro");
        for (Month m : Month.values()) {
            System.out.printf("%2d %-10s %d zile%n", m.getValue(), m.getDisplayName(TextStyle.FULL, ro), m.length(false));
        }
    }
}

Rezultat

 1 ianuarie   31 zile
 2 februarie  28 zile
 3 martie     31 zile
 4 aprilie    30 zile
 5 mai        31 zile
 6 iunie      30 zile
 7 iulie      31 zile
 8 august     31 zile
 9 septembrie 30 zile
10 octombrie  31 zile
11 noiembrie  30 zile
12 decembrie  31 zile

Exemplul 2: Anotimpul și trimestrul unei luni

import java.time.Month;

public class Main {
    static String anotimp(Month m) {
        return switch (m) {
            case DECEMBER, JANUARY, FEBRUARY -> "iarnă";
            case MARCH, APRIL, MAY -> "primăvară";
            case JUNE, JULY, AUGUST -> "vară";
            case SEPTEMBER, OCTOBER, NOVEMBER -> "toamnă";
        };
    }

    public static void main(String[] args) {
        for (int nr : new int[] {1, 4, 8, 10}) {
            Month m = Month.of(nr);
            System.out.println(m + ": " + anotimp(m) + ", trimestrul începe în " + m.firstMonthOfQuarter());
        }
        System.out.println("Februarie în an bisect: " + Month.FEBRUARY.length(true));
    }
}

Rezultat

JANUARY: iarnă, trimestrul începe în JANUARY
APRIL: primăvară, trimestrul începe în APRIL
AUGUST: vară, trimestrul începe în JULY
OCTOBER: toamnă, trimestrul începe în OCTOBER
Februarie în an bisect: 29

Greșeli frecvente

  • Scrii luna ca număr de la 0. Month.of(0) aruncă DateTimeException; ianuarie este 1.
  • Folosești ordinal() ca număr al lunii. Pornește de la 0; folosește getValue().

Comenzi înrudite

  • DayOfWeek: Enumerarea zilelor săptămânii, de la MONDAY (1) la SUNDAY (7), cu nume traduse prin getDisplayName.
  • LocalDate.getYear: Citesc părțile unei date: anul (getYear), luna ca Month (getMonth) și ziua din lună (getDayOfMonth).
  • LocalDate.of: Creează o dată fixă din an, lună și zi; aruncă DateTimeException dacă data nu există.
  • LocalDate.isLeapYear: isLeapYear spune dacă anul datei este bisect; lengthOfMonth dă numărul de zile din luna datei (28-31).