Java日历:我想删除一周的特定一天从日历[关闭]

问题描述 投票:0回答:1

更多细节我想摆脱的一周中的某几天。

我的意思是这样的:{Sat(1), Sun(2), Mon(3) , Tues(4) , Wed (5),Thurs(6) ,Fri(7)}

删除周天:{Sat(1), Sun(2), Mon(3) , Tues(4) , Wed (5)}

所以,我可以得到天的计数,而从具体的开始日期现在的日期除外日。

提示:我必须使用Java日历

问题是指定日动态

java date-range weekday java-calendar
1个回答
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();

如果你坚持在日历上只使用:

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);
}
© www.soinside.com 2019 - 2024. All rights reserved.