私の問題は次の通りです.2つの日付間の週末数を知る必要があります。 私の解決策に満足していないので、私は尋ねる。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とカウントされます。
私の意見では一見して理解するのが難しい場合は本当に好きではありません。
このクリーナーの作り方は誰にも分かりますか?
開始日と終了日が週末であるかどうかを確認し、それらの間の週末数をチェックします(2日間が '> 5'そうでなければ週末は1日を超えることはできません)。 – Rogue
1)最初の日付のDOWを探します。 2)2番目の日付のDOWを探します。 3)間の日数を求めます。 3)週には7日間があることがわかります - 数学を適用します。 –
日付が上がっている年の週を見つけることができますか?もしそうなら、私はあなたが2つの間に絶対的な違いがあると思うと思います。 –