Java Calendar: я хочу удалить конкретный день недели из календаря

Более подробно я хочу избавиться от конкретных дней недели.

Я имею в виду:{Сб (1), Солнце (2), Пн (3), Вт (4), Ср (5), Чт (6), Пт (7)}.

Удалить дни недели:{Сб (1), Солнце (2), Пн (3), Вт (4), Ср (5)}.

Таким образом, я могу получить количество дней без исключенных дней с определенной даты начала до даты, указанной сейчас.

Подсказка: я должен использовать календарь Java

***** Проблема в определении дня динамически

1 ответ

Решение

Если tou может использовать LocalDate и stream, вы можете применить функциональный подход.

LocalDate start = LocalDate.of(2015, 2, 1);
LocalDate end = LocalDate.of(2015, 2, 28);

List<DayOfWeek> includedDays = Arrays.asList(DayOfWeek.THURSDAY, DayOfWeek.FRIDAY);

long daysCount = Stream.iterate(start, date -> date.plusDays(1))
        .limit(ChronoUnit.DAYS.between(start, end))
        .filter(d -> includedDays.contains(d.getDayOfWeek()))
        .count();

Если вы настаиваете на календаре, просто используйте:

GregorianCalendar calendarStart = new GregorianCalendar(2015, 2, 1);
GregorianCalendar calendarEnd = new GregorianCalendar(2015, 2, 28);

List<Integer> includedDays = Arrays.asList(GregorianCalendar.THURSDAY, GregorianCalendar.FRIDAY);
long count = 0;
while(!calendarStart.equals(calendarEnd)) {
    if(includedDays.contains(calendarStart.get(Calendar.DAY_OF_WEEK))) {
        count ++;
    }
    calendarStart.add(Calendar.DATE, 1);
}
Другие вопросы по тегам