簡體   English   中英

獲取表示以毫秒為單位的時間的字符串的簡單方法

[英]Simple way of getting a String that represents time given a float in milliseconds

給定浮點數x = 1500,是否有一個內置對象可以返回字符串“ 00:00:01:30”,在我的情況下,浮點數表示經過的毫秒數,我想打印它的字符串版本。

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

我懷疑是否有內置的方法可以為您完成此操作,但是使用除法和%模運算符的組合,您可以很簡單地自行完成操作。

在此示例中,您知道1500/1000 = 1秒。 1500%1000將給您500,或在考慮該1秒后剩下的毫秒數。 如果以較大的毫秒數開始,則可以重復地延長此時間。

我不確定為什么將500毫秒寫為“ 30”。 通常,秒后會變成毫秒,因此看起來像“ 00:00:01:500”。

沒有這樣的內置對象可以表示任何類型的持續時間,因此沒有。 自己滾動,或者像往常一樣,只需使用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

在這里,您的工作效率極低,而且完全過分了,但是,嘿!

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

注意:您的毫秒將被截斷,不舍入到最接近的毫秒。

還有一個辦法,你要格式化您的價值。 但是,您需要將FLOAT轉換為LONG。 為什么還要使用浮子?

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

DurationFormatUtils.formatDurationHMS(longValue);

將返回標准的ISO8601格式。 “ 00:00:01:500”

請參閱標准ISO8601格式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM