Ako určiť deň v týždni zadaním konkrétneho dátumu v Jave?
1. Prehľad
V tomto krátkom návode sa dozvieme, ako extrahovať deň v týždni ako číslo a ako text z dátumu Java.
2. Problém
Obchodná logika často potrebuje deň v týždni. Prečo? Pre jedného sa pracovná doba a úrovne služieb líšia medzi pracovnými dňami a víkendmi. Preto je pre veľa systémov nevyhnutné získať deň ako číslo. Možno však budeme deň potrebovať aj ako text na zobrazenie.
Ako teda extrahujeme deň v týždni z dátumov v Jave?
3. Riešenie s java.util.Date
java.util.Date je dátumová trieda Java od verzie Java 1.0. Túto triedu pravdepodobne používa kód, ktorý začínal jazykom Java verzie 7 alebo nižšou.
3.1. Deň v týždni ako číslo
Najprv, extrahujeme deň ako číslo použitím java.util.Calendar:
public static int getDayNumberOld (dátum a dátum) {Calendar cal = Calendar.getInstance (); cal.setTime (dátum); návrat cal.get (Calendar.DAY_OF_WEEK); }
Výsledný počet sa pohybuje od 1 (nedeľa) do 7 (sobota). Kalendár definuje konštanty pre toto: Kalendár. NEDEĽA – Kalendár. SOBOTA.
3.2. Deň v týždni ako text
Teraz my rozbaľte deň ako text. Prejdeme okolo a Miestne nastavenie na určenie jazyka:
public static String getDayStringOld (dátum, dátum, miestne nastavenie) {DateFormat formatter = nový SimpleDateFormat ("EEEE", miestne nastavenie); návrat formatter.format (dátum); }
Toto vráti celý deň vo vašom jazyku, napríklad „pondelok“ v angličtine alebo „Montag“ v nemčine.
4. Riešenie s java.time.LocalDate
Java 8 prepracovala spracovanie dátumu a času a bola predstavená java.time.LocalDate na rande. Preto Projekty Java, ktoré fungujú iba na prostredí Java verzie 8 alebo vyššej, by mali používať túto triedu!
4.1. Deň v týždni ako číslo
Extrahovať deň ako číslo je triviálne teraz:
public static int getDayNumberNew (LocalDate date) {DayOfWeek day = date.getDayOfWeek (); return day.getValue (); }
Výsledné číslo sa stále pohybuje od 1 do 7. Tentokrát však Pondelok je 1 a nedeľa je 7! The deň v týždni má svoj vlastný enum — Deň v týždni. Podľa očakávania enum hodnoty sú PONDELOK – NEDEĽA.
4.2. Deň v týždni ako text
Teraz extrahujeme deň znova ako text. Míňame tiež a Miestne nastavenie:
public static String getDayStringNew (LocalDate date, Locale locale) {DayOfWeek day = date.getDayOfWeek (); návrat day.getDisplayName (TextStyle.FULL, miestne nastavenie); }
Rovnako ako s java.util.Date, tým sa vráti celý deň vo vybranom jazyku.
5. Záver
V tomto článku sme extrahovali deň v týždni z dátumov Java. Videli sme, ako pomocou čísla vrátiť text aj text java.util.Date a java.time.LocalDate.
Ako vždy, kód je k dispozícii na GitHub.