Tôi cần tìm số ngày giữa hai ngày : một là từ báo cáo và một là ngày hiện tại. Đoạn mã của tôi:
int age=calculateDifference(agingDate, today);
Đây calculateDifference
là một phương pháp riêng tư agingDate
và today
là Date
các đối tượng, chỉ để bạn làm rõ. Tôi đã theo dõi hai bài viết từ một diễn đàn Java, Chủ đề 1 / Chủ đề 2 .
Nó hoạt động tốt trong một chương trình độc lập mặc dù khi tôi đưa điều này vào logic của mình để đọc từ báo cáo, tôi nhận được sự khác biệt bất thường về giá trị.
Tại sao nó lại xảy ra và làm thế nào tôi có thể sửa chữa nó?
BIÊN TẬP :
Tôi đang nhận được số ngày lớn hơn so với số ngày thực tế.
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;
}
Ghi chú :
Thật không may, không có câu trả lời nào giúp tôi giải quyết vấn đề. Tôi đã giải quyết được vấn đề này với sự trợ giúp của thư viện Joda-time .