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ĽAKalendá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ý enumDeň v týždni. Podľa očakávania enum hodnoty sú PONDELOKNEDEĽ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.


$config[zx-auto] not found$config[zx-overlay] not found