मुझे दो तिथियों के बीच दिनों की संख्या खोजने की आवश्यकता है : एक रिपोर्ट से है और एक वर्तमान तिथि से है। मेरा स्निपेट:
int age=calculateDifference(agingDate, today);
यहाँ calculateDifferenceएक निजी तरीका है, agingDateऔर todayकर रहे हैं Dateबस अपने स्पष्टीकरण के लिए, वस्तुओं। मैंने जावा मंच से दो लेखों का अनुसरण किया है, थ्रेड 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;
}
ध्यान दें :
दुर्भाग्य से, किसी भी उत्तर ने मुझे समस्या को हल करने में मदद नहीं की। मैंने इस समस्या को जोडा-टाइम लाइब्रेरी की मदद से पूरा किया है ।