Проверьте, находится ли 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");
}
Вы можете применить эту логику к своей проблеме!