2013-11-25 48 views
2

我在這個格式幾個日期:31/08/13和我得到tehm從xls文件無法獲得天2個月之間的數字 - 具體情況

我需要做的是讓以前的月,並計算這些日期之間的日子。我真的不知道該怎麼做。

這是我曾嘗試:

代碼編輯*

Calendar start = Calendar.getInstance(); 
           Calendar end = Calendar.getInstance(); 
           end.setTime(row.getCell(0).getDateCellValue()); 
           start.add(start.MONTH,-1); 

           Date startDate = start.getTime(); 
           Date endDate = end.getTime(); 
           long startTime = startDate.getTime(); 
           long endTime = endDate.getTime(); 
           long diffTime = endTime - startTime; 
           long diffDays = diffTime/(1000 * 60 * 60 * 24); 

           if(diffDays < 0){ 
            System.out.println(Math.abs(diffDays)); 
           } 

           DateFormat dateFormatw = DateFormat.getDateInstance(); 
           System.out.println("The difference between "+ 
            dateFormatw.format(startDate)+" and "+ 
            dateFormatw.format(endDate)+" is "+ 
            diffDays+" days."); 

但似乎錯了。我真的無法理解,因爲我很累。沒有運氣,我在這方面損失了太多時間。

我試圖得到相同的日期,但一個月前,並計算的日子裏,這兩個日期endTimestartTime

請幫我之間!

+0

結賬喬達時間:http://www.joda.org/joda-time/ – Bizmarck

+0

這是怎麼回事?例外?錯誤?錯誤的輸出?也許你需要將其中一個分區操作數加倍。 –

+0

你能舉個例子嗎? – isnot2bad

回答

1

我不知道ProdCalendar是什麼,這大概是你項目內部的東西。但簡單的方式來獲得2日,這是(我認爲),你想要什麼,之間的天數是這樣的:

//First date 
Date d1 = dateFormat.parse("31-10-13"); 

//Second date 
Date d2 = dateFormat.parse("31-08-13"); 

//Interval:  
long intervalMs = d1.getTime() - d2.getTime(); 
long intervalDays = intervalMs/(1000*60*60*24); 

在你的代碼,date22只是用new date()所以這將是目前的初始化系統時間。您正在比較(從頭算)與從電子表格中檢索的日期。我也注意到在這條線附近展開該日曆cal

Calendar cal = Calendar.getInstance(); 
cal.setTime(row.getCell(0).getDateCellValue()); 

不被再次使用,因此似乎是多餘的。

你的代碼比它所需要的更復雜,所以你需要退後一步,思考你想要達到的目標。簡單的代碼是很好的代碼。

+0

Basicaly我有這個日期'31/08/13',我想將它轉換爲'31/07/13'和來計算這兩個日期之間的天數,我對代碼進行了一些修改,並會在一分鐘內編輯我的問題:) – Slim

+1

只是一個附註:你可能想使用'Math.ceil((double)intervalMs /(1000 * 60 * 60 * 24));',除非部分日期無關緊要(例如'2013-11-25 23:59'和'2013-11- 26 00:01'一天還是零天?)。 – Thomas

+0

您可以在日曆中使用日曆滾動而不是日期 – tgkprog