gpt4 book ai didi

java - 如何在 Java 中以 hh :mm:ss. SSS 格式格式化耗时间隔?

转载 作者:IT老高 更新时间:2023-10-28 20:52:21 27 4
gpt4 key购买 nike

我正在做一个秒表,我使用 Java 的 SimpleDateFormat 将毫秒数转换为一个不错的“hh:mm:ss:SSS”格式。问题是小时字段中总是有一些随机数。这是我正在使用的代码:

public static String formatTime(long millis) {
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss.SSS");

String strDate = sdf.format(millis);
return strDate;
}

如果我取下 hh 部分,那么它工作正常。否则,即使传入的参数(毫秒数)为零,它也会在 hh 部分显示像“07”这样的随机内容。

不过,我对 SimpleDateFormat 类了解不多。感谢您的帮助。

最佳答案

最新的 JDK 内置了对您想要做的事情的支持,其中包含一个鲜为人知的名为 TimeUnit 的类。

你要使用的是java.util.concurrent.TimeUnit使用间隔

SimpleDateFormat 就像它听起来的那样,它格式化 java.util.Date 的实例,或者在你的情况下它转换 long 值到 java.util.Date 的上下文中,它不知道如何处理您显然正在使用的 intervals

您可以轻松做到这一点,而无需求助于 JodaTime 等外部库。

import java.util.concurrent.TimeUnit;

public class Main
{
private static String formatInterval(final long l)
{
final long hr = TimeUnit.MILLISECONDS.toHours(l);
final long min = TimeUnit.MILLISECONDS.toMinutes(l - TimeUnit.HOURS.toMillis(hr));
final long sec = TimeUnit.MILLISECONDS.toSeconds(l - TimeUnit.HOURS.toMillis(hr) - TimeUnit.MINUTES.toMillis(min));
final long ms = TimeUnit.MILLISECONDS.toMillis(l - TimeUnit.HOURS.toMillis(hr) - TimeUnit.MINUTES.toMillis(min) - TimeUnit.SECONDS.toMillis(sec));
return String.format("%02d:%02d:%02d.%03d", hr, min, sec, ms);
}

public static void main(final String[] args)
{
System.out.println(formatInterval(Long.parseLong(args[0])));
}
}

输出将被格式化

13:00:00.000

关于java - 如何在 Java 中以 hh :mm:ss. SSS 格式格式化耗时间隔?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6710094/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com