获取表示浮点时间的字符串的简单方法,以毫秒为单位

时间:2013-03-05 21:36:33

标签: java

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

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

4 个答案:

答案 0 :(得分:4)

我怀疑是否有一种内置方法可以为您完成此操作,但是使用除法和%模运算符的组合可以非常简单地自行完成。

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

然而,我不确定为什么你有500毫秒写为“30”。通常,在几秒钟之后会出现毫秒,所以它看起来像“00:00:01:500”。

答案 1 :(得分:2)

没有这样的内置对象来表示任何类型的持续时间,所以没有。滚动自己或as always, just use 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

答案 2 :(得分:0)

在这里,效率极低,总体矫枉过正,但嘿嘿:

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

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

答案 3 :(得分:0)

IS 可以根据需要格式化您的值。但是,您需要将FLOAT转换为LONG。为什么还要使用浮动?

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

DurationFormatUtils.formatDurationHMS(longValue);

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

请参阅Standard ISO8601 Format