我可以使用這個方法,我試圖做一些幫助。我有一個問題對象,它有一個目標日期,我需要找出這個問題在多少天內被分裂/分裂的時間比今天的日期還要多。找到兩個日期之間的天數差異,並在每個月有多少天
形象這種情況: 可以說今天的日期是05-02-2013。
ID Target date
P1 02-02-2013
P2 27-01-2013
P3 26-01-2013
P4 05-12-2012
這意味着,每一個問題是遲到了很多天在接下來的幾個月:
DEC JAN FEB
P1 3
P2 4 5
P3 5 5
P4 26 31 5
的問題不能超過12個月。
現在我需要一個方法來總結這些數字存儲的月份名稱和總計晚日數。如果目標月份和現在月份相同,那麼這是一個簡單的例子,因爲我可以減去日期並存儲月份,但如果不是這種情況,該怎麼辦?我有以下代碼:
List<Problem> problems = problemQuery.getResultList(); //Problems list is already filtered and contain only late problems.
Calendar now = Calendar.getInstance();
Calendar before = Calendar.getInstance();
Map<Integer, Integer> newMap = new TreeMap<Integer, Integer>(); //map that contains month number and daysLateCount
for (Problem p : problems) {
before.setTime(p.getTarget_date());
int nowMonth = now.get(Calendar.MONTH);
int beforeMonth = before.get(Calendar.MONTH);
if (beforeMonth == nowMonth) { //easy case when both dates have same month
int result = now.get(Calendar.DAY_OF_MONTH) - before.get(Calendar.DAY_OF_MONTH);
if (newMap.containsKey(nowMonth)) {
int newLateDaysValue = newMap.get(nowMonth)+result; //get old result and add the new
newMap.put(nowMonth, newLateDaysValue);
}
else {
newMap.put(nowMonth, result);
}
}
else {
//What to do here???
}
}
也許我甚至可以跳過if-else子句,並制定一個算法,可以處理這兩種情況?我不知道,請幫助:)
有一個問題是超過12月中下旬的可能性?具體來說,最近幾個月可能包括兩個或更多Januarys,兩個或更多Februarys等? – VGR
我應該包括在我的問題:)。沒有問題不能超過12個月 –