Java でミリ秒を「X 分、x 秒」に変換するにはどうすればいいですか? 質問する

Java でミリ秒を「X 分、x 秒」に変換するにはどうすればいいですか? 質問する

ユーザーがプログラムで何かを開始したときの時間を記録したいですSystem.currentTimeMillis()。終了したら、変数System.currentTimeMillis()から現在の時間を減算しstart、「XX 時間、XX 分、XX 秒」または「XX 分、XX 秒」などの人間が読める形式で経過時間を表示したいと思います。1 時間もかかるとは考えにくいからです。

これを行う最善の方法は何ですか?

ベストアンサー1

使用java.util.concurrent.TimeUnitクラス:

String.format("%d min, %d sec", 
    TimeUnit.MILLISECONDS.toMinutes(millis),
    TimeUnit.MILLISECONDS.toSeconds(millis) - 
    TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis))
);

注: TimeUnitJava 1.5 仕様の一部ですが、toMinutesJava 1.6 で追加されました。

0 ~ 9 の値の先頭にゼロを追加するには、次のようにします。

String.format("%02d min, %02d sec", 
    TimeUnit.MILLISECONDS.toMinutes(millis),
    TimeUnit.MILLISECONDS.toSeconds(millis) - 
    TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis))
);

TimeUnitまたは がサポートされていない場合toMinutes(API バージョン 9 より前の Android など) は、次の式を使用します。

int seconds = (int) (milliseconds / 1000) % 60 ;
int minutes = (int) ((milliseconds / (1000*60)) % 60);
int hours   = (int) ((milliseconds / (1000*60*60)) % 24);
//etc...

おすすめ記事