İki tarih arasındaki günlerin sayısını bulmam gerekiyor : biri bir rapordan, diğeri de geçerli tarih. Snippet'im:
int age=calculateDifference(agingDate, today);
İşte calculateDifference
özel bir yöntemdir, agingDate
ve today
vardır Date
sadece açıklama için, nesneler. Bir Java forumundan iki makale takip ettim, Konu 1 / Konu 2 .
Bağımsız bir programda iyi çalışıyor, ancak bunu rapordan okumak için mantığıma dahil ettiğimde değerlerde olağandışı bir fark görüyorum.
Neden oluyor ve bunu nasıl düzeltebilirim?
DÜZENLE :
Gerçek Gün sayısına kıyasla daha fazla sayıda gün alıyorum.
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;
}
Not :
Ne yazık ki, yanıtların hiçbiri sorunu çözmeme yardımcı olmadı. Bu sorunu Joda-time kütüphanesinin yardımıyla başardım .