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

Java日历:我想从日历中删除特定的星期几,java,date-range,weekday,java-calendar,Java,Date Range,Weekday,Java Calendar,更多细节我想摆脱一周中的特定日子 我的意思是:{Sat1,Sun2,Mon3,Tues4,wed5,Thurs6,Fri7} 删除星期日:{星期一、星期二、星期一、星期二、星期四、星期三、星期五} 因此,我可以得到从特定开始日期到现在的日期,没有排除天数的天数计数 提示:我必须使用Java日历 问题是动态指定日期如果可以使用LocalDate和stream,则可以应用函数方法 LocalDate start = LocalDate.of(2015, 2, 1); LocalDate end =

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

我的意思是:{Sat1,Sun2,Mon3,Tues4,wed5,Thurs6,Fri7}

删除星期日:{星期一、星期二、星期一、星期二、星期四、星期三、星期五}

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

提示:我必须使用Java日历


问题是动态指定日期

如果可以使用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);
}

你的问题有点难理解。您想计算从日期到日期之间的星期四+星期五的数量?如果您的目的只是计算两个日期之间的天数,而不计算一周中的某些特定天数,那么我认为这会有所帮助:为什么您必须使用日历?你不能使用LocalDate吗?是的,这正是我想要的。你不能为includedDays创建动态列表吗?好的,所以你必须动态地将它转换为列表。如果您没有说明数据是如何从前端传入的,您希望我如何给您提供更准确的答案?此列表只是一个示例,假设您希望包括周四和周五。GregorianCalendar.星期四是GregorianCalendar类的常量,值为5,GregorianCalendar.FRIDAY为6。List includedDays已经是INT列表,因此您只需使用您的数据,而不是这个硬编码的示例。@Eng.Gabr如果您提供一些示例代码,这将更加容易。除此之外,我真的不知道将整数数组转换为整数列表有什么问题。Calendar.Thready只是一个常量,值为5。创建列表的代码行可以写成:Arrays.asListnew int[]{5,6};而不是硬编码的新int[]{5,6};只需使用前端的数据即可。