Проверьте, находится ли DAY_OF_WEEK между понедельником и пятницей

Я пытаюсь создать метод, который проверяет, находится ли "сегодня" с понедельника по пятницу. Для этого я получаю с этой линией 'int day = Calendar.DAY_OF_WEEK;' фактический день. После этого я заполняю ArrayList днями (понедельник, вторник, Wendsday, четверг и пятница). Теперь, когда я проверяю, действительно ли фактический день в моем ArrayList, я установил boolean DAY = true else я set boolean DAY = false. Я пробовал метод сегодня и вчера, но он всегда устанавливает логическое значение в false.

Что мне нужно изменить, чтобы мой код работал? Здесь вы найдете код.

код

                int day = Calendar.DAY_OF_WEEK;
                ArrayList<Integer> daylist = new ArrayList<Integer>();
                daylist.add(Calendar.MONDAY);
                daylist.add(Calendar.TUESDAY);
                daylist.add(Calendar.WEDNESDAY);
                daylist.add(Calendar.THURSDAY);
                daylist.add(Calendar.FRIDAY);

                if (daylist.contains(day)){
                    DAY = true;
                }else{
                    DAY = false;
                }

Ответы

Ответ 1

Ничего себе, это похоже на попытку убить москита с термоядерной боеголовкой: -)

Java гарантирует (в 1.5) (по крайней мере, до 1,8), что значения SUNDAY через SATURDAY являются смежными (от 1 до 7), поэтому просто проверить диапазон.

Однако DAY_OF_WEEK не является днем ​​недели, это номер поля (со значением 7), который должен быть передан получателю для получения дня недели. Единственный раз, когда сам Calendar.DAY_OF_WEEK будет соответствовать фактическому дню, будет по субботам.

Вы можете использовать код, например:

Calendar myDate = Calendar.getInstance(); // set this up however you need it.
int dow = myDate.get (Calendar.DAY_OF_WEEK);
boolean isWeekday = ((dow >= Calendar.MONDAY) && (dow <= Calendar.FRIDAY));

После этого isWeekday будет истинным, если и только если день от myDate был с понедельника по пятницу включительно.

Ответ 2

int day = Calendar.DAY_OF_WEEK; должен быть

Calendar cal; // The calendar object
....your other code for getting the date goes here....
int day = cal.get(Calendar.DAY_OF_WEEK);

Ваш текущий код просто получает значение константы Calendar.DAY_OF_WEEK.

Ответ 3

Это должно сделать трюк для вас, я предполагаю.

int day = cal.get(Calendar.DAY_OF_WEEK);
if (day >= Calendar.MONDAY && day <= Calendar.FRIDAY){
    DAY = true;
}else{
    DAY = false;
}

Ответ 4

int day = Calendar.DAY_OF_WEEK;

Логика нарушается прямо здесь. DAY_OF_WEEK - это постоянная идентификация того типа данных, который нам нужно извлечь из экземпляра Calendar.

Самое простое решение вашей проблемы (поскольку Calendar.FRIDAY > ... > Calendar.MONDAY) -

Calendar now = Calendar.getInstance();
int day = now.get(Calendar.DAY_OF_WEEK);
if (day >= Calendar.MONDAY && day <= Calendar.FRIDAY)
  // do something

Ответ 5

Первый Calendar.DAY_OF_WEEK - это целочисленное поле, которое всегда дает вам 7. Вам нужно создать экземпляр календаря, например Calendar cal = Calendar.getInstance(); По умолчанию он дает текущую дату в текущем часовом поясе. Затем вы можете вызвать cal.get(Calendar.DAY_OF_WEEK); который даст вам любой день между воскресеньем и субботой.

Теперь вы можете проверить что-то вроде этого

    if(cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY || cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) {
         System.out.println("Weekend");
     } else {
        System.out.println("Weekday");
     }

Вы можете применить эту логику к своей проблеме!