首页  >  文章  >  Java  >  如何将毫秒转换为“hh:mm:ss”格式?

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

Linda Hamilton
Linda Hamilton原创
2024-11-02 03:51:021000浏览

How to Convert Milliseconds to

将毫秒转换为“hh:mm:ss”格式

您可能会遇到需要将毫秒转换为熟悉的“ hh:mm:ss”格式,通常用于表示时间。这可能是应用程序中的常见要求,例如倒计时器。

理解问题

您可能已尝试使用以下代码来执行转换:

<code class="java">//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)));</code>

但是,此代码可能无法按预期工作。例如,对于 3600000 毫秒(代表 1 小时)的输入,您会得到“01:59:00”,而不是正确的“01:00:00”。

识别问题

经过仔细检查,问题出在这一行:

<code class="java">TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.MINUTES.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))</code>

这里,您使用分钟而不是小时将小时转换为毫秒。

更正逻辑

正确的代码应该使用 TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)) 代替:

<code class="java">//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)));</code>

此更改确保时间转换为正确完成后,您将在 3600000 毫秒内获得所需的“01:00:00”结果。

简化版本

您可以通过使用进一步简化代码模除法而不是减法:

<code class="java">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));</code>

此版本在提供相同准确结果的同时保持高效。

以上是如何将毫秒转换为“hh:mm:ss”格式?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn