小编典典

如何在 Java 中将毫秒转换为“X 分钟,x 秒”?

all

我想记录System.currentTimeMillis()用户在我的程序中开始某事的时间。System.currentTimeMillis()当他完成时,我将从变量中减去当前时间start,并且我想使用人类可读的格式向他们显示经过的时间,例如“XX
小时,XX 分钟,XX 秒”甚至“XX 分钟,XX 秒”,因为它不太可能花一个小时。

最好的方法是什么?


阅读 208

收藏
2022-03-06

共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))
);

注意:TimeUnit是 Java 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))
);

如果TimeUnittoMinutes不受支持(例如在 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...
2022-03-06