Поиск дня недели для даты в Java

Научитесь находить день недели для заданной даты, используя устаревшие классы Date и Calendar, а также новый API Java 8 Date.

1. Обзор

Может возникнуть необходимость отобразить день недели(с понедельника по воскресенье) в пользовательском интерфейсе, и тогда нам нужно будет найти эту информацию.

  • С Java 8 Date API у нас есть выделенный enum DayOfWeek, начинающийся с понедельника(1) по воскресенье(7). Мы можем использовать метод LocalDate.getDayOfWeek() для значения дня.
  • В Java, устаревший класс Calendar определяет 7 констант от SUNDAY(1) до SATURDAY(7). Мы можем получить день из экземпляра Calendar, используя метод cal.get(Calendar.DAY_OF_WEEK).

Важно обратить внимание на разницу в числах, присвоенных дням недели в обоих решениях.

2. Получите день недели с помощью LocalDate(Java 8)

Давайте рассмотрим программу, демонстрирующую, как получить день недели, используя класс LocalDate и перечисление DayOfWeek, начиная с Java 8.

LocalDate today = LocalDate.now();DayOfWeek dayOfWeek = today.getDayOfWeek();System.out.println("Day of the Week :: " + dayOfWeek);System.out.println("Day of the Week - in Number :: "+ dayOfWeek.getValue());System.out.println("Day of the Week - Formatted FULL :: "+ dayOfWeek.getDisplayName(TextStyle.FULL, Locale.getDefault()));System.out.println("Day of the Week - Formatted SHORT :: "+ dayOfWeek.getDisplayName(TextStyle.SHORT, Locale.getDefault()));

Вывод программы.

Day of the Week :: TUESDAYDay of the Week - in Number :: 2Day of the Week - Formatted FULL :: TuesdayDay of the Week - Formatted SHORT :: Tue

3. Получите день недели с помощью календаря(Java 7)

Теперь давайте найдем день недели, используя устаревшие классы Java java.util.Date и Calendar.

Calendar cal = Calendar.getInstance();cal.setTime(new Date());int dayOfWeekNum = cal.get(Calendar.DAY_OF_WEEK);DateFormat formatter = new SimpleDateFormat("EEEE");String dayOfWeekString = formatter.format(cal.getTime());System.out.println("Day of the Week - in Number :: " + dayOfWeekNum);System.out.println("Day of the Week - in Text :: " + dayOfWeekString);

Вывод программы.

Day of the Week - in Number :: 3Day of the Week - in Text :: Tuesday

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

Очевидно, что старые классы Java имели минимальную поддержку для получения названия дней недели. Начиная с Java 8, новые API даты и времени имеют солидную поддержку и даже выделенное перечисление для этой цели.

Исходный код Скачать

Прокрутить вверх