Hvordan bestemmes ugedagen ved at videregive en bestemt dato i Java?

1. Oversigt

I denne korte vejledning ser vi, hvordan man udtrækker ugedagen som et tal og som tekst fra en Java-dato.

2. Problem

Forretningslogik har ofte brug for ugedagen. Hvorfor? For det første varierer arbejdstid og serviceniveau mellem hverdage og weekender. Derfor er det nødvendigt for mange systemer at få dagen som et tal. Men vi har muligvis også brug for dagen som en tekst til visning.

Så hvordan udtrækker vi ugedagen fra datoer i Java?

3. Løsning med java.util.Date

java.util.Date har været Java-dataklassen siden Java 1.0. Kode, der startede med Java version 7 eller lavere, bruger sandsynligvis denne klasse.

3.1. Ugedag som nummer

Først, vi udtrækker dagen som et tal ved brug af java.util.Kalender:

public static int getDayNumberOld (Date date) {Kalender cal = Calendar.getInstance (); cal.setTime (dato); returner cal.get (Calendar.DAY_OF_WEEK); }

Den resulterende antallet varierer fra 1 (søndag) til 7 (lørdag). Kalender definerer konstanter for dette: Kalender. SøndagKalender. LØRDAG.

3.2. Ugedag som tekst

Nu er vi udtræk dagen som tekst. Vi passerer i en Lokal at bestemme sproget:

public static String getDayStringOld (Date date, Locale locale) {DateFormat formatter = new SimpleDateFormat ("EEEE", locale); returformater.format (dato); }

Det her returnerer hele dagen på dit sprog, såsom "mandag" på engelsk eller "montag" på tysk.

4. Løsning med java.time.LocalDate

Java 8 opdateret dato og tid håndtering og introduceret java.time.LocalDate til datoer. Derfor, Java-projekter, der kun kører på Java version 8 eller højere, skal bruge denne klasse!

4.1. Ugedag som nummer

Uddrag dagen som et tal er trivielt nu:

offentlig statisk int getDayNumberNew (LocalDate dato) {DayOfWeek dag = date.getDayOfWeek (); return day.getValue (); }

Det resulterende antal varierer stadig fra 1 til 7. Men denne gang, Mandag er 1 og søndag er 7! Det ugedag har sin egen enumDayOfWeek. Som forventet enum værdier er MANDAGSØNDAG.

4.2. Ugedag som tekst

Nu udtrækker vi dagen som tekst igen. Vi passerer også i en Lokal:

offentlig statisk String getDayStringNew (LocalDate-dato, locale locale) {DayOfWeek dag = date.getDayOfWeek (); return day.getDisplayName (TextStyle.FULL, locale); }

Ligesom med java.util.Date, dette returnerer hele dagen på det valgte sprog.

5. Konklusion

I denne artikel ekstraherede vi ugedagen fra Java-datoer. Vi så, hvordan man returnerer både et nummer og en tekst ved hjælp af java.util.Date og java.time.LocalDate.

Som altid er koden tilgængelig på GitHub.