Formatowanie za pomocą DateTimeFormatter
Parsuj i formatuj daty
Formatowanie za pomocą DateTimeFormatter to bezpłatna lekcja Java Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Java Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Java Academy zawiera 4 lekcji w sumie.
Zamiana dat na tekst
Domyślna metoda toString daty wyświetla ją w formacie ISO. Aby kontrolować wygląd wyniku lub parsować tekst w innym formacie niż ISO, należy użyć DateTimeFormatter z pakietu java.time.format.
Własny wzorzec
Formater należy utworzyć za pomocą ofPattern. Litery oznaczają poszczególne pola: yyyy oznacza rok, MM miesiąc, a dd dzień.
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2026, 5, 30);
DateTimeFormatter f = DateTimeFormatter.ofPattern("dd/MM/yyyy");
System.out.println(date.format(f));
}
}Formatowanie czasu
We wzorcach czasu HH oznacza godziny w formacie 24-godzinnym, mm minuty, a ss sekundy.
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
LocalTime time = LocalTime.of(14, 5, 30);
DateTimeFormatter f = DateTimeFormatter.ofPattern("HH:mm:ss");
System.out.println(time.format(f));
}
}Łączenie daty i czasu
Jeden wzorzec może zawierać zarówno pola daty, jak i czasu dla obiektu LocalDateTime.
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
LocalDateTime dt = LocalDateTime.of(2026, 5, 30, 9, 45);
DateTimeFormatter f = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
System.out.println(dt.format(f));
}
}Tekstowe nazwy miesięcy
Powtarzanie litery oznaczającej miesiąc zmienia jej formę: MM to liczba, MMM to skrócona nazwa, taka jak May, a MMMM to pełna nazwa.
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2026, 5, 30);
DateTimeFormatter f = DateTimeFormatter.ofPattern("dd MMMM yyyy", Locale.ENGLISH);
System.out.println(date.format(f));
}
}Nazwy dni tygodnia
Do uzyskania pełnej nazwy dnia tygodnia należy użyć EEEE, a do formy skróconej — EEE. Aby zapewnić przewidywalny język wyniku, należy przekazać obiekt Locale.
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2026, 5, 30);
DateTimeFormatter f = DateTimeFormatter.ofPattern("EEEE, dd MMM", Locale.ENGLISH);
System.out.println(date.format(f));
}
}Zegar dwunastogodzinny
Małe litery hh oznaczają godziny w formacie 12-godzinnym, a a znacznik AM lub PM.
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
LocalTime time = LocalTime.of(15, 30);
DateTimeFormatter f = DateTimeFormatter.ofPattern("hh:mm a", Locale.ENGLISH);
System.out.println(time.format(f));
}
}Parsowanie według wzorca
Ten sam formater może sparsować tekst z powrotem do daty. Należy przekazać go jako drugi argument do metody parse.
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
DateTimeFormatter f = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate date = LocalDate.parse("30/05/2026", f);
System.out.println(date.getMonth());
}
}Obsługa nieprawidłowych danych
Jeśli tekst nie pasuje do wzorca, parsowanie zgłasza wyjątek DateTimeParseException. Ryzykowne parsowanie należy umieścić w bloku try-catch.
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
public class Main {
public static void main(String[] args) {
DateTimeFormatter f = DateTimeFormatter.ofPattern("dd/MM/yyyy");
try {
LocalDate.parse("not a date", f);
} catch (DateTimeParseException e) {
System.out.println("Invalid date format!");
}
}
}Wbudowane formatery
W przypadku typowych zastosowań można pominąć wzorce i użyć predefiniowanych formaterów, takich jak DateTimeFormatter.ISO_DATE.
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2026, 5, 30);
System.out.println(date.format(DateTimeFormatter.ISO_DATE));
}
}Ponowne używanie formaterów
DateTimeFormatter jest niezmienny i bezpieczny w środowisku wielowątkowym, dlatego należy utworzyć go raz i używać ponownie. Gdy w grę wchodzą nazwy, zawsze należy przekazać obiekt Locale, aby zachować spójność wyników.
Szybki test
Sprawdź znajomość formatowania.
Podsumowanie
Poznałeś formatowanie daty i czasu:
DateTimeFormatter.ofPatterndefiniuje własny format wyniku- Litery odpowiadają polom:
yyyy,MM,dd,HH,mm - Większa liczba powtórzeń litery tworzy formy tekstowe, takie jak
MMMMiEEEE - Ten sam formater parsuje tekst, zgłaszając wyjątek
DateTimeParseExceptiondla nieprawidłowych danych - Formatery są niezmienne i można ich używać ponownie; w przypadku nazw należy przekazać obiekt
Locale
Często zadawane pytania
Czy lekcja „Formatowanie za pomocą DateTimeFormatter” jest bezpłatna?
Tak — pełny tekst „Formatowanie za pomocą DateTimeFormatter” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Java Academy, przejdź na CoddyKit PRO. Kurs Java Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Formatowanie za pomocą DateTimeFormatter”?
Parsuj i formatuj daty Ćwiczysz Java Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Java Academy?
Nie wymagamy żadnego doświadczenia. Java Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Formatowanie za pomocą DateTimeFormatter”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Java Academy?
Tak. Każda lekcja Java Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- LocalDate, LocalTime, LocalDateTime
- Instant i Duration
- Period i arytmetyka dat
- Formatowanie za pomocą DateTimeFormatter