2012-09-17 6 views
5

ミリ秒から秒と分をフォーマットする必要があります。私はcountdownTimerを使用しています。誰にも懇願はありますか?私はジョーダの時を見た。しかし、私は必要なのはフォーマットなので、1:05で1:5ではありません。おかげ秒と分をフォーマットする

private void walk() { 
    new CountDownTimer(15000, 1000) { 
     @Override 
     public void onFinish() { 
      lapCounter++; 
      lapNumber.setText("Lap Number: " + lapCounter); 
      run(); 
     } 

     @Override 
     public void onTick(long millisUntilFinished) { 
      text.setText("Time left:" + millisUntilFinished/1000); 
     } 
    }.start(); 
} 
+0

を使用したいですか?代わりに、整数が10より小さい場合は、常に整数の左側に「0」を追加することができます。 – BlackVegetable

+0

あなたのニーズをすべて満たしているかどうかはわかりませんが、一見価値があるかもしれません。[PrettyTime](http: /ocpsoft.org/prettytime/) – MadProgrammer

答えて

26

を使用することです標準の日付フォーマットクラスですが、それはちょっと重いかもしれません。私はString.formatメソッドを使用します。例:

int minutes = time/(60 * 1000); 
int seconds = (time/1000) % 60; 
String str = String.format("%d:%02d", minutes, seconds); 
+0

素晴らしい!それはまさに私が探していたものでした!私は "%d:%02d"を理解していますか?私は自分自身でこれを試してみました。ありがとう! –

+1

%は置換を示し、0は数字をゼロパッドに、2は幅を2に、dは10進数で表示を意味します。ドキュメントは次のとおりです。http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html –

6

は、限り、あなたは、あなたが60分以上を持っていないだろう知っているようにこれを行うことの本当の怠惰な方法は、ちょうどあなたが使用してそれを行うことができ、日付を作り、SimpleDateFormat

public void onTick(long millisUntilFinished) { 
    SimpleDateFormat dateFormat = new SimpleDateFormat("mm:ss"); 
    dateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); 
    Date date = new Date(millisUntilFinished); 
    text.setText("Time left:" + dateFormat.format(date)); 
} 
0

私はApache Commons StopWatchクラスを使用しました。そのtoStringメソッドのデフォルト出力は、ISO8601のようにhours:minutes:seconds.millisecondsです。

Example of Apache StopWatch

2

私はあなたがすでにSimpleNumberFormatに見たことが

org.apache.commons.lang.time.DurationFormatUtils.formatDuration(millisUntilFinished, "mm:ss") 
関連する問題