float x = 1500 の場合、文字列 "00:00:01:30" を返すことができる組み込みオブジェクトはありますか?
System.out.println(????.Stringvalue(x)); //for example
float 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
必要に応じて値をフォーマットする方法があります。ただし、FLOAT を LONG に変換する必要があります。とにかくフロートを使用するのはなぜですか?
org.apache.commons.lang3.time.DurationFormatUtilsを使用できます。
DurationFormatUtils.formatDurationHMS(longValue);
標準の ISO8601 形式を返します。「00:00:01:500」
標準 ISO8601 形式を参照してください。
ほら、非常に非効率的で、完全にやり過ぎですが、おいおい:
DateFormat df = new SimpleDateFormat("HH:mm:ss.SSS");
df.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(df.format(new Date((long) x)));
注: ミリ単位は、最も近いミリ単位に切り捨てられずに切り捨てられます。