2015-12-08 43 views
-4

我做了類顯示結果mmm:ss格式如何把毫秒轉換成「mmm:ss」格式?

下面是代碼:

class CountDown extends CountDownTimer { 

    public CountDown(long millisInFuture, long countDownInterval) { 
     super(millisInFuture, countDownInterval); 
    } 

    @Override 
    public void onTick(long millisUntilFinished) { 
     long ms = millisUntilFinished; 
     String text = String.format("%03d:%02d", 
       TimeUnit.MILLISECONDS.toMinutes(ms) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(ms)), 
       TimeUnit.MILLISECONDS.toSeconds(ms) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(ms))); 
     tvTimer.setText(text); 
    } 


    @Override 
    public void onFinish() { 
     try { 
      new AlertDialog.Builder(MCQActivity.this) 
        .setTitle("Time is over") 
        .setMessage("Your time is finished, Click on ok to go result page") 
        .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int which) { 
          dialog.dismiss(); 
          saveWorkAndShowResult(); 

         } 
        }) 
        .setIcon(android.R.drawable.ic_dialog_alert) 
        .show(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

如果我傳遞

mCountDownTimer = new CountDown(1000 * 60 * 30, 1000); 
mCountDownTimer.start(); 

這是工作的罰款,並顯示我30 mins

但是,如果我想顯示180 min

mCountDownTimer = new CountDown(1000 * 60 * 180, 1000); 

它是由60 min

開始

任何人可以幫助我如何解決這個問題?

+0

可能是因爲在您的格式 –

+0

@RC中沒有「小時部分」。感謝您的建議,請你幫我解決這個問題 –

+0

隨着「原始」計算:https://ideone.com/Aa02CG –

回答

1

你的代碼減少到分鐘數,不包括任何小時,只需刪除,上面寫着- TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(ms)解決這個

+0

非常感謝你:) –

0

您可以在代碼中使用下面的轉換函數;

 Long hour = TimeUnit.HOURS.convert(millisUntilFinished, TimeUnit.MILLISECONDS); 
     millisUntilFinished= millisUntilFinished% (1000 * 60 * 60); 
     Long minutes = TimeUnit.MINUTES.convert(millisUntilFinished, TimeUnit.MILLISECONDS); 
     millisUntilFinished= millisUntilFinished% (1000 * 60); 
     Long seconds = TimeUnit.SECONDS.convert(millisUntilFinished, TimeUnit.MILLISECONDS); 
     millisUntilFinished= millisUntilFinished% 1000; 
     Long milisec = millisUntilFinished; 

然後剛過去變量你的String格式化程序;

 String text = String.format("%03d:%02d", minutes , seconds); 
0

VAR日期=新的日期($(「#日期」)位。VAL( )); date.setTime(date.getTime() - date.getTimezoneOffset()* 60 * 1000);