Java日历:我想从日历中删除特定的星期几

Eng*_*abr 0 java date-range weekday java-calendar

更多细节我想摆脱一周的特定日子.

我的意思是:{星期六(1),星期日(2),星期一(3),星期二(4),星期三(5),星期四(6),星期五(7)}.

删除周日:{周六(1),周日(2),周一(3),周二(4),周三(5)}.

因此,我可以获得从特定开始日期到现在的排除天数的天数.

提示:我必须使用Java日历

*****问题是动态指定日期

Krz*_*sik 6

如果您可以使用LocalDate和流,则可以应用功能方法.

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();
Run Code Online (Sandbox Code Playgroud)

如果您坚持使用日历,请使用:

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);
}
Run Code Online (Sandbox Code Playgroud)

  • @ Eng.Gabr如果你提供一些示例代码,那将会更容易**.除此之外,我真的没有看到将int数组转换为整数列表的问题. (3认同)
  • 好的,所以你必须动态地将它转换成列表.如果您没有展示数据来自前端的数据,您如何期望我给您更精确的答案? (2认同)