0

给定浮点 x = 1500,是否有一个内置对象可以返回字符串“00:00:01:30”在我的情况下,浮点表示经过的毫秒数,我想打印它的字符串版本。

System.out.println(????.Stringvalue(x));  //for example
4

4 回答 4

4

我怀疑是否有一个内置方法可以为您执行此操作,但是您自己使用除法和%模运算符的组合应该相当简单。

在此示例中,您知道 1500 / 1000 = 1 秒。1500 % 1000 会给你 500,或者考虑到 1 秒后的剩余毫秒数。如果您以较大的毫秒数开始,这可以重复扩展。

但是,我不确定为什么将 500 毫秒写为“30”。通常,几秒后会是毫秒,所以它看起来像“00:00:01:500”。

于 2013-03-05T21:40:04.573 回答
2

没有这样的内置对象来表示任何类型的持续时间,所以没有。滚动你自己的相当简单,或者像往常一样,只需使用 Joda Time。

long x = 1500; // Don't use floats to store milliseconds.
Duration d = new Duration(x);
String formatted = String.format("%02d:%02d:%02d.%02d",
    d.getStandardHours(),
    d.getStandardMinutes(),
    d.getStandardSeconds(),
    d.getMillis() % 1000);
System.out.println(formatted); // 00:00:01.500
于 2013-03-05T21:39:07.527 回答
0

你去吧,效率极低,而且完全矫枉过正,但是嘿嘿:

DateFormat df = new SimpleDateFormat("HH:mm:ss.SSS");
df.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(df.format(new Date((long) x)));

注意:您的毫秒被截断,而不是四舍五入到最接近的毫。

于 2013-03-05T21:44:33.217 回答
0

一种方法可以根据需要格式化您的值。但是,您需要将 FLOAT 转换为 LONG。为什么还要使用浮点数?

您可以使用org.apache.commons.lang3.time.DurationFormatUtils

DurationFormatUtils.formatDurationHMS(longValue);

将返回标准 ISO8601 格式。“00:00:01:500”

请参阅标准 ISO8601 格式

于 2013-03-05T21:45:38.530 回答