2つの日付(日付またはカレンダーオブジェクト)の間の日数を計算するには、計算の終了日も考慮してください。私は方法の下に使用Javaの日計算ロジックの終了日も考慮してください
:
Date d1 = new Date(); // 30-08-2016
Calendar c= Calendar.getInstance();
c.add(Calendar.YEAR, 2016);
c.add(Calendar.MONTH, Calendar.AUGUST);
c.add(Calendar.DAY_OF_MONTH, 31)// 31-08-2016
Date d2 = c.getTime();
daysBetween(D2、D1)例えば
public static int daysBetween(Date d1, Date d2) {
return Days.daysBetween(new LocalDate(d1.getTime()), new LocalDate(d2.getTime())).getDays();
}
。
メソッドが返す「1」が、私は検討する必要があるので、私は「2」としたい終了日も、それはその要件については30と31
を意味私は、そのメソッドが返すものは何でも1または前を追加することができます値も返します。これは、問題を解決する正しい方法ではなく、うるう年の日付も考慮する必要があります。
問題を解決するのを手伝ってください。
*あなたが何を求めているのかの技術用語は、Half-Openです。ここで、時間の長さは*包含*で始まり、*は排他*です。 *あなたが求めているのは、「終わり」と「終わり」の両方が含まれていることです。ハーフオープンアプローチは一般的に使用され、より賢明で実用的です。一貫して使用すると、Half-Openは日時処理ロジックをよりクリーンに、より明確に、より簡単にします。要件で閉鎖された数が必要な場合は、単純に1を追加することが正しい解決策になります。ただし、おそらくゼロカウント(要件に熟考して解決する必要があります)を除きます。 –
@BasilBourque一般に、ハーフオープンは、潜在的により正確な単位が実際に使用される可能性のある間隔を処理するのに役立ちますが、日付単位では単位が一番小さい単位であるため状況が異なります。銀行や保証の分野ではいつものように、この分野(私のような)で働く人々は閉鎖された日付間隔を使用します(例えば、1ヶ月は閉じられた範囲[2016-08-01/2016-08-31]としてモデル化されます)。 [2016-08-01/2016-09-01]のようなものの代わりに別の月を表示しないことをお勧めします –