Научитесь находить день недели для заданной даты, используя устаревшие классы 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 даты и времени имеют солидную поддержку и даже выделенное перечисление для этой цели.