Podstawy API java.time
Używaj niemutowalnych, przejrzystych typów daty/czasu zamiast Date i Calendar.
Porównanie kodu
✕ Pre-Java 8
// Mutable, confusing, zero-indexed months Calendar cal = Calendar.getInstance(); cal.set(2025, 0, 15); // January = 0! Date date = cal.getTime(); // not thread-safe
✓ Java 8+
LocalDate date = LocalDate.of(
2025, Month.JANUARY, 15);
LocalTime time = LocalTime.of(14, 30);
Instant now = Instant.now();
// immutable, thread-safe
Widzisz problem z tym kodem? Daj nam znać.
Dlaczego nowoczesne podejście wygrywa
Niemutowalne
Wartości daty/czasu nie mogą być przypadkowo zmodyfikowane.
Przejrzyste API
Month.JANUARY, nie 0. DayOfWeek.MONDAY, nie 2.
Bezpieczne wątkowo
Bez synchronizacji — swobodne współdzielenie między wątkami.
Stare podejście
Date + Calendar
Nowoczesne podejście
java.time.*
Od JDK
8
Poziom trudności
Początkujący
Wsparcie JDK
Podstawy API java.time
Dostępne
Szeroko dostępne od JDK 8 (marzec 2014)
Jak to działa
java.time oferuje LocalDate, LocalTime, LocalDateTime, Instant, ZonedDateTime — wszystkie niemutowalne i bezpieczne wątkowo. Miesiące są numerowane od 1. Koniec z zamieszaniem Calendar.JANUARY = 0.
Powiązana dokumentacja
Dowód