2012-05-17 77 views
5

我需要獲取當前日期和將來的日期之間的區別,以android,天,小時,分鐘和秒爲單位。如果當前的日期和時間是17/05/2012 03:53:00,未來的日期是18/05/2012 04:55:00。Android中的日期,時間,分鐘和秒數獲取日期和時間差異

我需要顯示差作爲剩餘時間=天:1,小時:1,和分鐘2.

任何形式的幫助將不勝感激。提前謝謝了。

問候, Munazzaķ

回答

8

您可以減去兩個日期,以及計算出的差異。有點像這樣:

long difference = calendar.getTimeInMillis()-currentTime; 

    long x = difference/1000; 
    seconds = x % 60; 
    x /= 60; 
    minutes = x % 60; 
    x /= 60; 
    hours = x % 24; 
    x /= 24; 
    days = x; 

你可以減去你已計算的時間。你得到的時間,得到的休息,做的分鐘等。

+0

這只是給不同單位的整個持續時間的長短,而不是天數,小時,和剩餘的分鐘的故障OP意味着。 – santafebound

0

使用Date類。

使用getTime()方法,您可以在兩個日期的時間(以毫秒爲單位)。 然後,您可以創建另一個Date對象,其中包含兩個日期之間相減的結果的毫秒數。 自第一個Date以來,您將擁有天數,小時數和分鐘數。

16

你可以做這樣

c_date=18/05/2012 04:55:00. and saved_date=17/05/2012 03:53:00 

    long diffInMillisec = c_date.getTime() -saved_date.getTime(); 
    long diffInSec = TimeUnit.MILLISECONDS.toSeconds(diffInMillisec); 
    seconds = diffInSec % 60; 
    diffInSec/= 60; 
    minutes =diffInSec % 60; 
    diffInSec /= 60; 
    hours = diffInSec % 24; 
    diffInSec /= 24; 
    days = diffInSec;` 
1

我最近實施了同樣的事情,我用JodaTime。你可以從這裏下載JAR並將其包含在你的Android應用:http://joda-time.sourceforge.net/

//Create your taget date  
Calendar cal = Calendar.getInstance(); 
    cal.clear(); 
    cal.set(Calendar.YEAR, 2012); 
    cal.set(Calendar.MONTH, Calendar.JULY); 
    cal.set(Calendar.DATE, 15); 
    cal.set(Calendar.HOUR_OF_DAY, 8); 
    Date startDate = cal.getTime(); 

//Use JodaTime to calculate difference 
    Period period = getTimePassedSince(startDate); 

//Extract values and display 
    daysTV.setText("" + Math.abs(period.getDays())); 
    hoursTV.setText("" + Math.abs(period.getHours())); 
    minsTV.setText("" + Math.abs(period.getMinutes())); 
    secsTV.setText("" + Math.abs(period.getSeconds())); 

    ... 
    public static Period getTimePassedSince(Date initialTimestamp){ 
      DateTime initDT = new DateTime(initialTimestamp.getTime()); 
      DateTime now = new DateTime(); 
      Period p = new Period(initDT, now, PeriodType.dayTime()).normalizedStandard(PeriodType.dayTime()); 
      return p; 
     }