2013-02-14 167 views
0

試圖在Java中製作一個倒計時程序。Java - 日曆/日期差異 - 查找差異降至秒

我正在尋找應用程序的日期部分之間的差異,並且出於某種原因,我只能獲得這些日子。

我想要幾天,幾小時,幾分鐘和幾秒鐘。我不知道爲什麼我的計算只是四捨五入到一個偶數...在這個例子中,而不是163.xx?

這裏是我的代碼:

import java.util.Date; 
import java.util.Calendar; 
import java.util.GregorianCalendar; 

public class CalcData { 

    Calendar cal1; 
    Date today; 

    public CalcData() { 

     cal1 = new GregorianCalendar(); 
     today = new GregorianCalendar().getTime(); 

    } 

    public String calcDiff() { 

     cal1.set(2013, 6, 27, 7, 15, 0); 
     double theDays = calcDays(cal1.getTime(), today); 
     return "" + theDays; 

    } 

    public double calcDays(Date d1, Date d2) { 

     double theCalcDays = (double) ((d1.getTime() - d2.getTime())/(1000 * 60 * 60 * 24)); 
     return theCalcDays; 

    } 
} 

當我運行這一點,正如我所說,我得到的結果是:163.0

我會想,如果是使用毫秒,這將是一些小數點。我相信這是簡單的,我失蹤了,但找不到它!

在此先感謝!

回答

0

您正在用另一個整數除整數。在進行分區之前,你需要將這些投入到雙打中。像這樣

double theCalcDays = ((double) (d1.getTime() - d2.getTime()))/(1000 * 60 * 60 * 24); 
+0

果然!非常感謝。很高興這是一個簡單的錯誤。 – cbaze19 2013-02-14 07:39:47

+0

如果兩個日期來自不同的夏令時節省區,則這將不起作用。在這種情況下,時差爲X天-1和23小時:) – Antoniossss 2014-05-06 06:44:19

+0

事實上,在有夏令時的地方,每年有一天是23小時,而一天是25小時。但是,日期對象內部是UTC中的一個值。 UTC只有24小時的日子,所以它工作。考慮時區時,您總會遇到此問題:兩小時的電話會議可能會在同一個時區的同一天開始和結束,並且可能會在不同時區的不同時間開始和結束。他們不同意天數!這與持續時間無關,而是根據該時區來解釋時間。 – AgilePro 2014-05-07 00:06:16