问题:
使用倒计时器的开发人员遇到的问题难以将毫秒转换为所需的“hh:mm:ss”格式。他们最初的尝试导致时间显示不正确,特别是对于超过一小时的值。
解决方案:
主要问题源于使用以下方法将小时转换为毫秒时的逻辑缺陷分钟而不是几个小时。具体来说,代码使用了:
TimeUnit.MINUTES.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))
而它应该是:
TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))
代码演示:
这是修改后的代码片段将毫秒正确格式化为“hh:mm:ss”:
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)));
测试用例:
long millis = 3600000; String hms = ... // Replace with revised code from above System.out.println(hms); // Expected output: 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));
两种变体都实现了正确的“hh:mm:ss”格式,并利用 TimeUnit API 无缝处理转换。
以上是如何在 Java 中将毫秒转换为“hh:mm:ss”格式?的详细内容。更多信息请关注PHP中文网其他相关文章!