Java如何将毫秒转换为“ hh:mm:ss”格式?

这是我的尝试

//hh:mm:ss

String.format("%02d:%02d:%02d",

TimeUnit.MILLISECONDS.toHours(millis),

TimeUnit.MILLISECONDS.toMinutes(millis) -

TimeUnit.MINUTES.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),

TimeUnit.MILLISECONDS.toSeconds(millis) -

TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));

因此,当我尝试类似的值时3600000ms,我得到01:59:00,这是错误的,因为它应该是01:00:00。显然我的逻辑有问题,但是目前,我看不出它是什么!

有人可以帮忙吗?

编辑

固定它。这是格式化毫秒hh:mm:ss格式的正确方法

//hh:mm:ss

String.format("%02d:%02d:%02d",

TimeUnit.MILLISECONDS.toHours(millis),

TimeUnit.MILLISECONDS.toMinutes(millis) -

TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),

TimeUnit.MILLISECONDS.toSeconds(millis) -

TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis))));

问题是这样的TimeUnit.MINUTES.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))。应该是这个TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))。

Java 时间格式 倒数计时器

回答:

String.format("%02d:%02d:%02d", 

TimeUnit.MILLISECONDS.toHours(millis),

TimeUnit.MILLISECONDS.toMinutes(millis) -

TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)), // The change is in this line

TimeUnit.MILLISECONDS.toSeconds(millis) -

TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));

你被转化小时使用millisseconds 分钟,而不是小时。

顺便说一句,我喜欢你对TimeUnitAPI 的使用:)

这是一些测试代码:

public static void main(String[] args) throws ParseException {

long millis = 3600000;

String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis),

TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),

TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));

System.out.println(hms);

}

输出:

01:00:00

我意识到上面的代码可以通过使用模数除法而不是减法来大大简化:

String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis),

TimeUnit.MILLISECONDS.toMinutes(millis) % TimeUnit.HOURS.toMinutes(1),

TimeUnit.MILLISECONDS.toSeconds(millis) % TimeUnit.MINUTES.toSeconds(1));

仍将TimeUnitAPI用于所有魔术值,并提供完全相同的输出。

以上是 Java如何将毫秒转换为“ hh:mm:ss”格式? 的全部内容, 来源链接: utcz.com/qa/432744.html

回到顶部