Мені потрібно знайти кількість днів між двома датами : одна - зі звіту, а друга - поточної дати. Мій фрагмент:
int age=calculateDifference(agingDate, today);
Ось calculateDifference
приватний метод, agingDate
і today
це Date
об’єкти, лише для Вашого пояснення. Я переглянув дві статті з форуму Java, тема 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 .