2012-10-23 106 views
19

可能重複:
Calculating the Difference Between Two Java Date Instances減去兩個日期中的Java

我知道這可能是重複的線程。但我試圖找出計算兩個日期之間差異的方法。從jquery日期字符串的格式是'yyyy-mm-dd'。我讀這個字符串並轉換爲java這樣的日期

Date d1 = new SimpleDateFormat("yyyy-M-dd").parse((String) request.getParameter(date1)); 
Date d2 = new SimpleDateFormat("yyyy-M-dd").parse((String) request.getParameter(date2)); 

我想計算這兩個日期之間的天數差異。

注:我不能使用第三方API作爲那些需要審查。

+0

你肯定是毫米的代替MM? – Jimmy

+0

有哪些區別?根據地區等有多種定義。看看各種第三方時間API,看看我要帶着這個評論去哪裏。 –

+1

如果您認爲它是一個複製品,爲什麼不搜索它?這不是像其他線程無法找到... –

回答

18
long diff = Math.abs(d1.getTime() - d2.getTime()); 
long diffDays = diff/(24 * 60 * 60 * 1000); 
+3

這將在春季的夏令時邊界發生故障。示例(使用您的代碼),'d1 = new Date(112,3-1,11,0,0,0)','d2 = new Date(112,3-1,12,0,0,0)' ,結果爲'0'。 –

+1

答案提供了截斷的結果。對於舍入結果:long diffDays =(diff + 12 * 60 * 60 * 1000)/(24 * 60 * 60 * 1000) –

+0

@SteveKuo,我知道這是前一陣子,但是您有更好的解決方案嗎?夏令時不會失敗?我並非試圖表達自己,我自己也在處理類似的問題,並希望避免有明顯缺陷的代碼。 –

-2

假設你正在限制使用Date,你可以做到以下幾點:

Date diff = new Date(d2.getTime() - d1.getTime());

在這裏,我們計算以毫秒爲單位的差異,因爲「時代」,並創建一個新的Date對象在時代的偏移處。就像其他人所說的:重複問題中的答案可能是更好的選擇(如果你沒有被束縛到Date)。

+0

天被要求爲 –

+0

請仔細閱讀這個問題。你的答案不**回答原來的問題。 – DavidPostill

-1
Date d1 = new SimpleDateFormat("yyyy-M-dd").parse((String) request. 
      getParameter(date1)); 
Date d2 = new SimpleDateFormat("yyyy-M-dd").parse((String) request. 
      getParameter(date2)); 

long diff = d2.getTime() - d1.getTime(); 

System.out.println("Difference between " + d1 + " and "+ d2+" is " 
     + (diff/(1000 * 60 * 60 * 24)) + " days."); 
+1

在夏令時邊界開始時將會失敗。例如,d1 ='2012-3-11'和d2 ='2012-3-12'結果爲0天。 –