1. ホーム
  2. java

[解決済み] Javaでミリ秒を「X分X秒」に変換するには?

2022-03-16 12:12:04

質問

を使用して時間を記録したい。 System.currentTimeMillis() ユーザーが私のプログラムで何かを始めたとき。その人が終了したら、私は現在の System.currentTimeMillis() から start という変数で、XX時間XX分XX秒のような人間が読みやすいフォーマットで経過時間を表示したい。

どうすればいいのでしょうか?

どのように解決するのですか?

を使用します。 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))
);

TimeUnit はJava 1.5仕様の一部ですが toMinutes は、Java 1.6から追加されました。

0-9の値に対して先頭の0を追加するには、こうすればよい。

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...