2013-12-19 83 views
1

我想在android中倒計時事件。事件的日期和時間存儲在數據庫中,但倒計時會返回比應該更多的天數。CountDownTimer Android

這是試過的。

String EventDate="2013-12-26 15:00:00"; 

SimpleDateFormat FormatDate = new SimpleDateFormat("yyyy-MM-dd HH:mm",Locale.US); 
FormatDate.setTimeZone(TimeZone.getTimeZone("GMT+1")); 

try { 
    Date date = FormatDate.parse(mm); 


    } catch (Exception e) { 
    // TODO: handle exception 
} 
Long ToCount=date.getTime(); 
CountDownTimer cdt = new CountDownTimer(ToCount, 1000) { 

    public void onTick(long millisUntilFinished) { 
     EventTv.setText(""+ String.format(
     "%d Days,%d Hours, %d min, %d sec", 
     TimeUnit.MILLISECONDS.toDays(millisUntilFinished), 
     TimeUnit.MILLISECONDS.toHours(millisUntilFinished), 
     TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished), 
     TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - 
     TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished)) 

     )); 


    } 

    public void onFinish() { 
     // TODO Auto-generated method stub 
     EventTv.setText("done"); 

    } 
}.start(); 

但是,如果我運行的應用程序,TextView顯示(16059days,3875429hours,23125799min)

請幫我知道我在做什麼錯了?

+0

的getTime()返回1970年1月1日以來的毫秒數。您可能想要做ToCount = date.getTime() - System.currentTimeMilis();提供日期>當前時間。 – dymmeh

+0

@dophie謝謝,我改變了它,但現在我得到(4天97小時5878分41秒)。 EventDate設置爲=「2013-12-23 20:00:00」; – olakunle

+0

那麼,今天是第19 ..所以這對我有意義。 – dymmeh

回答

2

問題是與

date.getTime() 

這是自1970年1月1日,格林尼治標準時間午夜返回的毫秒數。

因此,要獲得從當前時間的毫秒數,你就需要使用

Date now = new Date(); 
Long ToCount = date.getTime() - now.getTime(); 

還以millisUntilFinished轉換爲相應格式,您可能需要使用

TimeUnit.MILLISECONDS.toDays(millisUntilFinished), 
TimeUnit.MILLISECONDS.toHours(millisUntilFinished) - 
TimeUnit.DAYS.toHours(TimeUnit.MILLISECONDS.toDays(millisUntilFinished)), 
TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) - 
TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millisUntilFinished)), 
TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - 
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished)) 
+0

非常感謝。完美工作。我真的很感激 – olakunle