我的问题是我需要知道有多少周末是2日期间以下的数量。 由于我对我的解决方案不满意,我问了一下。我如何才能找到周末betwee 2个日期
int numberOfWeekendContained(LocalDate start, LocalDate end) {
int weekends = 0;
for (LocalDate day = startTime.toLocalDate(); !day.isAfter(end); day = day.plusDays(1)) {
LocalDate previousDay = day.minusDays(1);
if (isWeekEnd(day) && (!isWeekEnd(previousDay) || !isInRange(previousDay, start, end))) {
weekends++;
}
}
return weekends;
}
private static boolean isWeekEnd(LocalDate day) {
return DayOfWeek.SATURDAY.equals(day.getDayOfWeek()) || DayOfWeek.SUNDAY.equals(day.getDayOfWeek());
}
private static boolean isInRange(LocalDate day, LocalDate start, LocalDate end) {
return !day.isBefore(start) && !day.isAfter(end);
}
周日或周六算作整个周末。也就是说,如果我的范围从周日到周一,我有1个周末。如果从周日去下周六,他会成为2
我真的不喜欢的,如果这是在我看来是复杂的第一眼就被理解。
有没有人一个想法如何使这一清洁?
检查开始和结束是周末,然后检查其间周末他们的数量(以及如果两个天都'> 5'否则,您不能有超过1个周末)。 – Rogue
1)找到第一个日期的DOW。 2)找到第二个日期的DOW。 3)查找中间的天数。 3)我们知道一周有7天 - 应用数学。 –
你能找到某一日期的一周吗?如果是这样,我认为你只是找到两者之间的绝对差异。显然,跨越多个年度变得困难,但 –