2014-01-07 62 views
0

上,我試圖讓這個倒計時到以天/小時/分/秒的事件的一天算。我需要更改此代碼,以便在啓動時使用當前的android手機時間和日期,以根據手機顯示的時間和日期顯示剩餘時間。目前,開始時間和日期是由我設定,每安裝並模擬器運行應用時,它顯示34天所以如果我安裝和運行它明天不會顯示33天但有34天后再次..我找不到任何問題有一個有用的答案,我在過去幾天看過幾個地方。這裏是我的事件活動java,我在相對佈局中使用TextView。倒計時開始在指定的時間和日期,我需要用時間和日期的android手機

extends Activity { 

Button button01; 
CountDownTimer mCountDownTimer; 
TextView mTextView; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.event_activity); 

    SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy, hh:mm"); 
    Date a = null, b = null; 
    try { 
     a = sdf.parse("24-02-2014, 14:30"); 
     b = sdf.parse("06-01-2014, 02:04"); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 

    mTextView = (TextView) findViewById(R.id.timer); 

    mCountDownTimer = new CountDownTimer(a.getTime() - b.getTime(), 1000) { 
     StringBuilder time = new StringBuilder(); 

     @Override 
     public void onFinish() { 
      mTextView.setText(DateUtils.formatElapsedTime(0)); 
      //mTextView.setText("Times Up!"); 
     } 

     @Override 
     public void onTick(long millisUntilFinished) { 
      time.setLength(0); 
      // Use days if appropriate 
      if(millisUntilFinished > DateUtils.DAY_IN_MILLIS) { 
       long count = millisUntilFinished/DateUtils.DAY_IN_MILLIS; 
       if(count > 1) 
        time.append(count).append(" days, "); 
       else 
        time.append(count).append(" day, "); 

       millisUntilFinished %= DateUtils.DAY_IN_MILLIS; 
      } 

       if(millisUntilFinished > DateUtils.HOUR_IN_MILLIS) { 
        long count2 = millisUntilFinished/DateUtils.HOUR_IN_MILLIS; 
        if(count2 > 1) 
         time.append(count2).append(" hours, "); 
        else 
         time.append(count2).append(" hour, "); 

        millisUntilFinished %= DateUtils.HOUR_IN_MILLIS; 
      } 
       if(millisUntilFinished > DateUtils.MINUTE_IN_MILLIS) { 
        long count3 = millisUntilFinished/DateUtils.MINUTE_IN_MILLIS; 
        if(count3 > 1) 
         time.append(count3).append(" minutes, "); 
        else 
         time.append(count3).append(" minute, "); 

        millisUntilFinished %= DateUtils.MINUTE_IN_MILLIS; 
       } 

      time.append(DateUtils.formatElapsedTime(Math.round(millisUntilFinished/1000d))); 
      mTextView.setText(time.toString()); 
     } 
    }.start(); 
} 

請幫幫忙,我怎麼能得到這個更新,而不是將開始日期和時間自己當前的時間!它在運行模擬器時沒有顯示正確的開始時間,因爲它需要我運行它。由於

-KG

回答

0

粘貼此代碼

import android.os.Bundle; 
    import android.app.Activity; 
    import java.text.DateFormat; 
    import java.text.ParseException; 
    import java.text.SimpleDateFormat; 
    import java.util.Calendar; 
    import java.util.Date; 
    import android.widget.TextView; 


    public class MainActivityCalDate extends Activity { 

@SuppressLint("SimpleDateFormat")  
@Override 
     protected void onCreate(Bundle savedInstanceState) { 

      super.onCreate(savedInstanceState); 

      setContentView(R.layout.cal_date); 

      TextView tv1; 

      tv1 = (TextView) findViewById(R.id.textView1);  


      SimpleDateFormat dfDate = new SimpleDateFormat("dd/MM/yyyy"); 
      java.util.Date d = null; 
      java.util.Date d1 = null; 
      Calendar cal = Calendar.getInstance(); 
      try { 
        d = dfDate.parse("13/02/2014 "); 
        d1 = dfDate.parse(dfDate.format(cal.getTime()));//Returns 15/10/2012 
       } catch (java.text.ParseException e) { 
        e.printStackTrace(); 
       } 

      int diffInDays = (int) ((d.getTime() - d1.getTime())/ (1000 * 60 * 60 * 24)); 
      System.out.println(diffInDays); 
      tv1.setText(""+diffInDays); 
     } 

    } 

它將工作。您從模擬器日期和時間設置更改日期,並重新啓動活動,它將顯示當天的更新結果。如果你有任何疑問,然後問我。

+0

我得到錯誤說這些進口未使用「導入java.text.DateFormat中; import java.text.ParseException; import java.util.Date;' – user3167632

+0

同樣的SimpleDateFormat顯示了這個錯誤「描述\t資源\t路徑\t位置\t類型 要獲得本地格式使用getDateInstance(),getDateTimeInstance(),或getTimeInstance(),或例如區域設置使用新的SimpleDateFormat(字符串模板,區域設置區域) .US用於ASCII日期。 \t線27 \t的Android林特問題」 – user3167632

+0

請先移除先前的進口領域,並添加我的導入字段。沒有別的,它只是與兩種不同的進口產生衝突。 SimpleDateFormat不顯示錯誤,它只是顯示黃色警報消息。但它不妨礙代碼。 –

相關問題