Kako odrediti dan u tjednu prolazeći određeni datum na Javi?
1. Pregled
U ovom kratkom vodiču vidjet ćemo kako izvući dan u tjednu kao broj i kao tekst s Java datuma.
2. Problem
Poslovna logika često treba dan u tjednu. Zašto? Kao prvo, radno vrijeme i razine usluge razlikuju se između radnih dana i vikenda. Stoga je dobivanje broja kao broja neophodno za mnoge sustave. Ali dan će nam možda trebati i kao tekst za prikaz.
Pa, kako izdvojiti dan u tjednu iz datuma na Javi?
3. Rješenje sa java.util.Datum
java.util.Datum je Java klasa datuma od Jave 1.0. Kôd koji je započeo s Javom verzije 7 ili starijom vjerojatno koristi ovu klasu.
3.1. Dan u tjednu kao broj
Prvi, dan izdvajamo kao broj koristeći java.util.Kalendar:
javni statički int getDayNumberOld (datum datum) {Calendar cal = Calendar.getInstance (); cal.setTime (datum); vrati cal.get (Calendar.DAY_OF_WEEK); }
Dobivena broj se kreće od 1 (nedjelja) do 7 (subota). Kalendar definira konstante za ovo: Kalendar.NEDJELJA – Kalendar.SUBOTA.
3.2. Dan u tjednu kao tekst
Sad mi izdvojiti dan kao tekst. Prolazimo u a Lokalno za određivanje jezika:
javni statički String getDayStringOld (datum, datum lokalizacije) {DateFormat formatter = novi SimpleDateFormat ("EEEE", lokalizacija); return formatter.format (datum); }
Ovaj vraća cijeli dan na vašem jeziku, poput "Ponedjeljak" na engleskom ili "Montag" na njemačkom jeziku.
4. Rješenje sa java.time.LocalDate
Java 8 je izmijenila i uvela rukovanje datumima i vremenom java.time.LocalDate za datume. Stoga, Java projekti koji se izvode samo na Javi verzije 8 ili novijoj trebaju koristiti ovu klasu!
4.1. Dan u tjednu kao broj
Izdvajanje dana kao broja trivijalno je sada:
javni statički int getDayNumberNew (datum lokalnog datuma) {DayOfWeek dan = date.getDayOfWeek (); povratak day.getValue (); }
Rezultirajući broj i dalje se kreće od 1 do 7. Ali ovaj put, Ponedjeljak je 1, a nedjelja 7! The dan u tjednu ima svoj nabrajanje — Dan u tjednu. Očekivano, nabrajanje vrijednosti su PONEDJELJAK – NEDJELJA.
4.2. Dan u tjednu kao tekst
Sada opet izdvajamo dan kao tekst. Također prolazimo u a Lokalno:
javni statički String getDayStringNew (Datum lokalnog datuma, lokalizacija) {DayOfWeek dan = date.getDayOfWeek (); return day.getDisplayName (TextStyle.FULL, locale); }
Baš kao i kod java.util.Datum, ovo vraća cijeli dan na odabranom jeziku.
5. Zaključak
U ovom smo članku dan iz tjedna izdvojili iz Java datuma. Vidjeli smo kako vratiti i broj i tekst pomoću java.util.Datum i java.time.LocalDate.
Kao i uvijek, kôd je dostupan na GitHub-u.