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.