Hvordan bestemme ukedagen ved å passere en spesifikk dato i Java?
1. Oversikt
I denne korte opplæringen ser vi hvordan du trekker ut ukedagen som et tall og som tekst fra en Java-dato.
2. Problem
Virksomhetslogikk trenger ofte ukedagen. Hvorfor? For det første varierer arbeidstid og servicenivå mellom arbeidsdager og helger. Derfor er det nødvendig for mange systemer å få dagen som et tall. Men vi trenger kanskje også dagen som en tekst for visning.
Så hvordan trekker vi ut ukedagen fra datoer i Java?
3. Løsning med java.util.Date
java.util.Date har vært Java-dataklassen siden Java 1.0. Kode som startet med Java versjon 7 eller lavere, bruker sannsynligvis denne klassen.
3.1. Ukedag som nummer
Først, vi trekker ut dagen som et tall ved hjelp av java.util.Kalender:
public static int getDayNumberOld (Date date) {Calendar cal = Calendar.getInstance (); cal.setTime (dato); retur cal.get (Calendar.DAY_OF_WEEK); }
Resultatet antall varierer fra 1 (søndag) til 7 (lørdag). Kalender definerer konstanter for dette: Kalender. SØNDAG – Kalender. LØRDAG.
3.2. Ukedag som tekst
Nå vi trekk ut dagen som tekst. Vi passerer i en Lokal for å bestemme språket:
public static String getDayStringOld (Date date, Locale locale) {DateFormat formatter = new SimpleDateFormat ("EEEE", locale); returformater.format (dato); }
Dette returnerer hele dagen på språket ditt, for eksempel "mandag" på engelsk eller "Montag" på tysk.
4. Løsning med java.time.LocalDate
Java 8 har gjennomgått håndtering av dato og klokkeslett og introdusert java.time.LocalDate for datoer. Derfor, Java-prosjekter som bare kjører på Java versjoner 8 eller høyere, bør bruke denne klassen!
4.1. Ukedag som nummer
Å trekke ut dagen som et tall er trivielt nå:
offentlig statisk int getDayNumberNew (LocalDate dato) {DayOfWeek dag = date.getDayOfWeek (); return day.getValue (); }
Det resulterende tallet varierer fortsatt fra 1 til 7. Men denne gangen, Mandag er 1 og søndag er 7! De ukedagen har sin egen enum — Ukedag. Som forventet, enum verdiene er MANDAG – SØNDAG.
4.2. Ukedag som tekst
Nå trekker vi ut dagen som tekst igjen. Vi passerer også i en Lokal:
public static String getDayStringNew (LocalDate date, Locale locale) {DayOfWeek day = date.getDayOfWeek (); return day.getDisplayName (TextStyle.FULL, lokal) }
Akkurat som med java.util.Date, dette returnerer hele dagen på det valgte språket.
5. Konklusjon
I denne artikkelen hentet vi ukedagen fra Java-datoer. Vi så hvordan du kan returnere både et tall og en tekst ved hjelp av java.util.Date og java.time.LocalDate.
Som alltid er koden tilgjengelig på GitHub.