„Przypomniałem sobie, że chciałem ci trochę opowiedzieć o pracy z datami”.

„Powiedziałeś mi już, że Java ma klasę Date i mogę używać tej klasy do pracy z datami”.

„Hmm. Cóż, klasa Date jest od jakiegoś czasu przestarzała”.

„Teraz zaleca się zamiast tego użycie klasy Calendar, która ma metodę getTime() zwracającą bieżącą datę”.

„To jest zwykle tworzony obiekt kalendarza:”

Utwórz obiekt kalendarza
Calendar cal = Calendar.getInstance();

„Po wywołaniu tej metody tworzony jest właściwy kalendarz na podstawie ustawień komputera”.

„Właściwy” kalendarz? Czy to znaczy, że jest ich kilka?

– Tak. Cóż, bardziej trafne byłoby określenie „istotne”. Faktem jest, że Ziemia ma nie jeden, ale wiele kalendarzy. Prawie każdy z nich jest powiązany z jakąś religią lub krajem.

„Rok może być inny w zależności od kraju, w którym się znajdujesz”.

„Oto przykłady najpopularniejszych kalendarzy”.

Klasa kalendarza Nazwa kalendarza
Kalendarz gregoriański Chrześcijański kalendarz gregoriański
kalendarz buddyjski Kalendarz buddyjski
Japoński kalendarz cesarski Japoński kalendarz cesarski

„Istnieje również kalendarz chiński, kalendarz islamski i wiele innych”.

"Widzę."

„Aby uzyskać aktualną datę, musisz napisać kod w następujący sposób:”

Pobierz aktualny czas
Calendar cal = Calendar.getInstance();
Date date = cal.getTime();

„Klasa Calendar ma wiele metod, które pozwalają szybko uzyskać dowolne informacje o dacie i godzinie”.

Kod Uwagi
Calendar calendar = Calendar.getInstance();

int era = calendar.get(Calendar.ERA);
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);

int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
int hour = calendar.get(Calendar.HOUR);
int minute = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND);
era 
rok 
miesiąc 
dzień miesiąca

dzień tygodnia (pon., wt., śr., …)
godzina 
minuta 
sekunda

„Czasami naprawdę potrzebujesz tylko fragmentu dostępnych informacji. Na przykład bieżący rok lub dzień tygodnia”.

„Ale czasami po prostu trzeba wyświetlić datę w odpowiednim formacie”.

„Na przykład w pliku dziennika lub w innym miejscu”.

„Albo stwórz format, który użytkownik może dostosować. Co wtedy robisz?”

„Do tego też są specjalne klasy. Klasa SimpleDateFormat doskonale nadaje się do zadania, które opisałeś:”

Jak wyświetlić datę w żądanym formacie
Calendar calendar = Calendar.getInstance();

DateFormat formatter = new SimpleDateFormat("MM-DD-YY");

String message = formatter.format(calendar.getTime());

„Ach. Pamiętam. Wyjaśniłeś mi już trochę o SimpleDateFormat , ale szczerze mówiąc, niewiele pamiętam”.

„To wszystko jest bardzo proste. Tworzysz obiekt SimpleDateFormat i przekazujesz mu wzór daty, który chcesz uzyskać. Następnie wywołujesz metodę format, która podaje przekazaną datę w pożądanej formie”.

„Brzmi interesująco. Chciałbym poznać więcej szczegółów”.

„Proszę bardzo. Szczegóły. Oto kilka liter, których można użyć we wzorze daty:”

List Opis
G Zastąpiony epoką (AD lub BC)
y Zastąpiony przez rok
M Zastąpiony przez miesiąc
w Numer tygodnia w roku
W Numer tygodnia w miesiącu
D Numer dnia w roku
D Dzień miesiąca
F Dzień tygodnia w miesiącu
mi Dzień tygodnia
A AM/PM (przed lub po południu)
H Godzina w formacie 24-godzinnym (0-23)
k Godzina w formacie 24-godzinnym (1-24)
k Godzina w formacie 12-godzinnym (0-11)
H Godzina w formacie 12-godzinnym (1-12)
M Minuty
S sekundy
S milisekundy
z Strefa czasowa, sformatowana w następujący sposób: Pacific Standard Time, PST
Z Strefa czasowa, sformatowana w następujący sposób: -0800/td>

„Świetnie! To prawie wszystko, czego potrzebujesz”.

„Istnieją jeszcze pewne niuanse związane z powtarzaniem tych liter”.

„Jeśli napiszesz YY, otrzymasz dwie ostatnie cyfry roku. Jeśli napiszesz YYYY, otrzymasz wszystkie cztery cyfry roku”.

„Istnieje również pewna złożoność z miesiącami. MM to numer miesiąca. MMM to trzyliterowy skrót miesiąca, tj. styczeń, luty, marzec, kwiecień, maj itd. MMMM oznacza pełną nazwę miesiąca ”.

„Możesz także wyświetlić cały dzień tygodnia (używając EEEE) lub tylko dwie pierwsze litery (używając EE).”

„Dzięki, Rishi. Ta klasa SimpleDateFormat jest naprawdę przydatna. Teraz już wiem”.

"Miłego używania! I powodzenia!"