2011-02-02 11 views
0

次の問題があり、まだ最適な解決策を見つけることができませんでした。私はprintf()機能を使用してストリームにそれを印刷したいJavaフォーマットmilisecondsからuu:mm:ss

int miliseconds = 65111;

: は、私は次の値を持つ整数を考えてみましょう。私は次の操作を行うことができます方法はあります:

printf("Time: %uu:mm:ssT", miliseconds");

ので、それが返されます:

ここ

Time: 00:01:05

を私はちょうど%のUU作っ:MM:SST一部を、そこですこれを行う方法。

また、私はすべての書式設定オプションを見つけることができるウェブサイトを知っていますので、次回はそれを自分で見ることができます。

乾杯、

ティモ

+0

'api、ここに示すように(http://mre-anotherprogrammersblog.blogspot.com/2012/01/java-how-to-format-milliseconds-to.html)。はい...自己宣伝の恥知らずの作品ですが、それは関連しています!とIMHO、はるかに良い解決策。 – mre

答えて

3

SimpleDateFormatを使用して新しいDate(ミリ秒)から時刻をフォーマットする場合、SimpleDateFormatがタイムゾーンに敏感であることを忘れないでください。したがって、このように、使用する前に、UTCに設定します。

DateFormat outFormat = new SimpleDateFormat("HH:mm:ss"); 
outFormat.setTimeZone(TimeZone.getTimeZone("UTC")); 

Date d = new Date(milliseconds); 
String result = outFormat.format(d); 

(私が入力したJSpinner用のミリ秒の時刻値を私のプログラムで同様のコードを使用しています。)私は `TimeUnitでチェックアウトでしょう

4

SimpleDateFormat機能を見てください。唯一yodatimeを含む代わりに、J2SEを使用するように更新サンプル -

は、次のサンプル

String inputPattern = .... 
String outputPattern = .... 
String ms = ((Integer) milliseconds).toString(); 
DateFormat inFormat = new SimpleDateFormat(inputPattern); 
DateFormat outFormat = new SimpleDateFormat(outputPattern); 

// Parse input 
Date date = inFormat.parse(ms); 

// Format the output 
String output = outFormat.format(date); 

[編集]考えてみましょう。

+0

ええ、私はそれを見ました。しかし、printfの部分に引数を付けて、私はそれをちょうどやり遂げることができる方法はありますか? –

+0

@Timo Will * no * –

+0

方法があります、私の答えを見てください。しかし、それはPOSIX strftimeを使うほどうまくはありません。 – maaartinus

4

使用

final int miliseconds = 65111; 
System.out.printf("%1$TM:%1$TS.%1$TL\n", (long) miliseconds); 

や詳細についてはFormat String Syntaxを参照してください。

+0

これは本当によく私の質問に答える。しかし、これはあなたのやり方ですか、それともヨハンのやり方でしょうか? –

+0

私は私のソリューションを使用したいと思いますが、 'strftime("%M:%S.%L "、miliseconds)'のようなものと比較すると、どちらもひどいです。 Javaでは 'printf("%T(%M:%S.%L) "' ' – maaartinus

+0

のように見えます。 – tbraun

関連する問題