[英]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.