2つの日付の間の日数を見つける必要があります。1つはレポートからのもので、もう1つは現在の日付です。私のスニペット:
int age=calculateDifference(agingDate, today);
ここではcalculateDifference
プライベートメソッドである、agingDate
とtoday
しているDate
だけで、あなたの明確化のために、オブジェクト。Javaフォーラムの2つの記事、スレッド1 /スレッド2をフォローしました。
スタンドアロンプログラムでは正常に機能しますが、これをロジックに含めてレポートから読み取ると、値に異常な違いが生じます。
なぜそれが起こっているのですか、どうすれば修正できますか?
編集:
実際の日数と比較して、日数が増えています。
public static int calculateDifference(Date a, Date b)
{
int tempDifference = 0;
int difference = 0;
Calendar earlier = Calendar.getInstance();
Calendar later = Calendar.getInstance();
if (a.compareTo(b) < 0)
{
earlier.setTime(a);
later.setTime(b);
}
else
{
earlier.setTime(b);
later.setTime(a);
}
while (earlier.get(Calendar.YEAR) != later.get(Calendar.YEAR))
{
tempDifference = 365 * (later.get(Calendar.YEAR) - earlier.get(Calendar.YEAR));
difference += tempDifference;
earlier.add(Calendar.DAY_OF_YEAR, tempDifference);
}
if (earlier.get(Calendar.DAY_OF_YEAR) != later.get(Calendar.DAY_OF_YEAR))
{
tempDifference = later.get(Calendar.DAY_OF_YEAR) - earlier.get(Calendar.DAY_OF_YEAR);
difference += tempDifference;
earlier.add(Calendar.DAY_OF_YEAR, tempDifference);
}
return difference;
}
注意 :
残念ながら、どの答えも私が問題を解決するのに役立ちませんでした。私はJoda-timeライブラリの助けを借りてこの問題を達成しました。