Как да определите ден от седмицата чрез преминаване на конкретна дата в Java?

1. Общ преглед

В този кратък урок ще видим как да извлечем деня от седмицата като число и като текст от дата на Java.

2. Проблем

Бизнес логиката често се нуждае от деня от седмицата. Защо? Първо, работното време и нивата на обслужване се различават между работните и почивните дни. Следователно получаването на деня като число е необходимо за много системи. Но може да се нуждаем и от деня като текст за показване.

И така, как да извлечем деня от седмицата от дати в Java?

3. Решение с java.util.Date

java.util.Date е клас на дата на Java от Java 1.0. Кодът, който е започнал с Java версия 7 или по-ниска, вероятно използва този клас.

3.1. Ден от седмицата като число

Първо извличаме деня като число, използвайки java.util.Calendar :

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

Полученият брой варира от 1 (неделя) до 7 (събота) . Календарът определя константи за това: Calendar.SUNDAY - Calendar.SATURDAY .

3.2. Ден от седмицата като текст

Сега извличаме деня като текст . Минаваме в Езикова да определи езика:

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

Това връща целия ден на вашия език , като „понеделник“ на английски или „Montag“ на немски.

4. Решение с java.time.LocalDate

Java 8 преработи обработката на датата и часа и въведе java.time.LocalDate за дати. Следователно Java проекти, които се изпълняват само на Java версии 8 или по-нова, трябва да използват този клас!

4.1. Ден от седмицата като число

Сега извличането на деня като число е тривиално :

public static int getDayNumberNew(LocalDate date) { DayOfWeek day = date.getDayOfWeek(); return day.getValue(); }

Полученото число все още варира от 1 до 7. Но този път понеделник е 1, а неделя е 7 ! На ден от седмицата има своя собствена ENUM - DayOfWeek . Както се очаква, стойностите на изброяването са ПОНЕДЕЛНИК - НЕДЕЛЯ .

4.2. Ден от седмицата като текст

Сега отново извличаме деня като текст. Преминаваме и в локал :

public static String getDayStringNew(LocalDate date, Locale locale) { DayOfWeek day = date.getDayOfWeek(); return day.getDisplayName(TextStyle.FULL, locale); }

Точно както при java.util.Date , това връща целия ден на избрания език.

5. Заключение

В тази статия извлечихме деня от седмицата от датите на Java. Видяхме как да върнем едновременно число и текст, използвайки java.util.Date и java.time.LocalDate .

Както винаги, кодът е достъпен в GitHub.