Ce face LocalDate.of
LocalDate.of(2026, 10, 19) este modul obișnuit de a crea o dată anume. Luna se dă ca număr de la 1 la 12 sau ca valoare a enumerării Month (Month.OCTOBER), care se citește mai ușor.
Spre deosebire de unele biblioteci care „repară” singure datele greșite, LocalDate.of verifică valorile. 31 aprilie sau 29 februarie într-un an care nu este bisect aruncă DateTimeException, cu un mesaj care spune exact ce nu este valid.
Parametri
| Parametru | Descriere |
|---|---|
an |
Anul, de exemplu 2026. Sunt permiși și ani negativi sau foarte mari (−999999999 … 999999999). |
luna |
Luna: un int de la 1 la 12 sau o valoare Month. |
zi |
Ziua din lună, de la 1 la 28-31, după lună și an. |
Ce returnează
Un LocalDate nou. Aruncă DateTimeException dacă valorile nu formează o dată reală.
Exemple
Exemplul 1: Date fixe dintr-un orar
import java.time.LocalDate;
import java.time.Month;
public class Main {
public static void main(String[] args) {
LocalDate inceputScoala = LocalDate.of(2026, 9, 8);
LocalDate vacantaIarna = LocalDate.of(2026, Month.DECEMBER, 20);
System.out.println("Școala începe: " + inceputScoala + " (" + inceputScoala.getDayOfWeek() + ")");
System.out.println("Vacanța de iarnă: " + vacantaIarna + " (" + vacantaIarna.getDayOfWeek() + ")");
System.out.println("Luna ca număr: " + vacantaIarna.getMonthValue());
}
}
Rezultat
Școala începe: 2026-09-08 (TUESDAY)
Vacanța de iarnă: 2026-12-20 (SUNDAY)
Luna ca număr: 12
Exemplul 2: O dată care nu există
2026 nu este an bisect, deci 29 februarie nu există. Excepția este prinsă și mesajul este afișat.
import java.time.DateTimeException;
import java.time.LocalDate;
public class Main {
public static void main(String[] args) {
int[][] date = {{2024, 2, 29}, {2026, 2, 29}, {2026, 4, 31}};
for (int[] d : date) {
try {
System.out.println("Valid: " + LocalDate.of(d[0], d[1], d[2]));
} catch (DateTimeException e) {
System.out.println("Invalid: " + e.getMessage());
}
}
}
}
Rezultat
Valid: 2024-02-29
Invalid: Invalid date 'February 29' as '2026' is not a leap year
Invalid: Invalid date 'APRIL 31'
Greșeli frecvente
- Scrii luna de la 0, ca în
Calendar:LocalDate.of(2026, 0, 15)aruncă excepție. Înjava.time, ianuarie este 1. - Folosești
LocalDate.ofcu date introduse de utilizator fărătry/catch. O zi greșită oprește programul cuDateTimeException.
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.parse: Transformă un text într-o dată: implicit formatul ISO 2026-10-19, sau orice format dat printr-un DateTimeFormatter.Month: Enumerarea celor 12 luni (JANUARY = 1 … DECEMBER = 12), cu lungimea lunii și numele traduse.LocalDateTime.of: of creează o dată cu oră din valori; parse citește una dintr-un text (ISO 2026-10-19T14:30 sau un format dat).