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.NEDJELJAKalendar.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 nabrajanjeDan u tjednu. Očekivano, nabrajanje vrijednosti su PONEDJELJAKNEDJELJA.

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.