2つの異なる日の間の日数を計算する方法を考え出していますが、説明される。たとえば、8/1から8/31までの就業日数を計算したいとしますが、従業員は月曜日、火曜日、水曜日のみで作業します。その結果、この従業員はその期間に15日間しか働かないことになります。Java Calendarを使用して特定の日数を除いた特定の日数を計算する
誰かがjavaカレンダークラスを使用して同様のものを組み立てましたか?
2つの異なる日の間の日数を計算する方法を考え出していますが、説明される。たとえば、8/1から8/31までの就業日数を計算したいとしますが、従業員は月曜日、火曜日、水曜日のみで作業します。その結果、この従業員はその期間に15日間しか働かないことになります。Java Calendarを使用して特定の日数を除いた特定の日数を計算する
誰かがjavaカレンダークラスを使用して同様のものを組み立てましたか?
終了日に達するまで、日付を1日増分することでこれを行うことができます。各反復で、日が月、火、または水であるかどうかをチェックし、カウンタをインクリメントします。例えば
:あなたはjava.util.Calendarの持つ独自のソリューションを展開でき
final Calendar current = Calendar.getInstance();
current.set(2011, 7, 1);
final Calendar end = Calendar.getInstance();
end.set(2011, 7, 31);
int count = 0;
while (current.compareTo(end) != 0) {
current.add(Calendar.DAY_OF_MONTH, 1);
int dayOfWeek = current.get(Calendar.DAY_OF_WEEK);
if (dayOfWeek == Calendar.MONDAY ||
dayOfWeek == Calendar.TUESDAY ||
dayOfWeek == Calendar.WEDNESDAY) {
count++;
}
}
System.out.println(count);
。しかし、私はObjectLab Kitの日付ユーティリティのような既存のライブラリを調べることをお勧めします。
Try Joda Timeは、日付と時刻を管理する最適なソリューションです。
修正dogbaneのコード:
final Calendar current = Calendar.getInstance();
current.set(2011, 7, 1);
final Calendar end = Calendar.getInstance();
end.set(2011, 7, 31);
int count = 0;
while (!current.after(end)) {
int dayOfWeek = current.get(Calendar.DAY_OF_WEEK);
if (dayOfWeek == Calendar.MONDAY ||
dayOfWeek == Calendar.TUESDAY ||
dayOfWeek == Calendar.WEDNESDAY) {
count++;
}
current.add(Calendar.DAY_OF_MONTH, 1);
}
System.out.println(count);
場合に使用ジョダ時間:
DateTime current = new DateTime(2011, 8, 1, 0, 0, 0, 0);
DateTime end = new DateTime(2011, 8, 31, 0, 0, 0, 0);
int count = 0;
while (!current.isAfter(end)) {
int dayOfWeek = current.getDayOfWeek();
if (dayOfWeek == DateTimeConstants.MONDAY || dayOfWeek == DateTimeConstants.TUESDAY
|| dayOfWeek == DateTimeConstants.WEDNESDAY) {
count++;
}
current = current.plusDays(1);
}
System.out.println(count);
ありがとう、jonagr、変更されたコードがコンパイルされました。 –
しかし8/1から8/31に入れても、15を返すべきですが、何らかの理由で12を返します。 –
7/1/2011が正しく設定されていないようです。 7月1日は金曜日(6)ですが、Javaカレンダーは月曜日(2)と考えています。私はJoda Timeに精通していません。どうすればこの作業を行うことができますか? –
だけヒント:何を負いません、これを行うことは非常に、非常に注意してください、と見つけます会計士はあなたのためにそれをテストし、それが理にかなっているかどうかを確認します。プログラマーは論理的な生き物であり、会計士+税コードは論理的ではありません。間違っていることがたくさんある。 – Oliver
その月の月曜日、火曜日または水曜日のいずれかが銀行/祝日の場合はどうなりますか? – jarnbjo