Muszę znaleźć liczbę dni między dwiema datami : jeden pochodzi z raportu, a drugi to data bieżąca. Mój fragment:
int age=calculateDifference(agingDate, today);
Oto calculateDifference
prywatna metoda agingDate
i today
są to Date
obiekty, tylko dla twojego wyjaśnienia. Śledziłem dwa artykuły z forum Java, wątek 1 / wątek 2 .
Działa dobrze w samodzielnym programie, chociaż kiedy włączam to do mojej logiki do czytania z raportu, otrzymuję niezwykłą różnicę w wartościach.
Dlaczego tak się dzieje i jak mogę to naprawić?
EDYTOWAĆ :
Otrzymuję większą liczbę dni w porównaniu z rzeczywistą liczbą dni.
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;
}
Uwaga :
Niestety żadna z odpowiedzi nie pomogła mi rozwiązać problemu. Mam osiągnąć ten problem z pomocą Joda czasu bibliotece.