7

私のアプリでは、実行を一定時間一時停止するオプションがあります。実行が再開される時間を秒単位で表示したいのですが、時間文字列をシステム設定に従ってフォーマットする必要があります。これは私が思いついたコードです:

long millis = getResumeTime();
String timeString;
timeString = SimpleDateFormat.getTimeInstance(SimpleDateFormat.MEDIUM).format(millis);

これにより、秒を含む書式設定された文字列が生成されますが、設定で 24 時間形式を設定していても、AM/PM 形式の時刻が返されます。システム トレイの時刻は 24 時間形式を使用して正しくフォーマットされているため、さらに面白いです。

私は次のように DateFormat.getTimeFormat を使用してみました:

long millis = getResumeTime();
String timeString;
java.text.DateFormat df = android.text.format.DateFormat.getTimeFormat(this);
timeString = df.format(millis);

しかし、結果の文字列には秒が含まれず、それらを含める方法がわかりません。

このコードを Android 4.2 エミュレーターで実行しています。ここで何か不足していますか?SimpleDateFormat は 12/24 時間設定を認識しませんか? そうでない場合、システム形式で時間 (時間、分、秒を含む) の文字列表現を取得するにはどうすればよいですか?

4

5 に答える 5

5

Android 5 から 6.0.1では、 Use 24-hour format設定を無視するDateFormat#getTimeInstance(int)a を返すバグがあるようです。他の回答では、このバグのさまざまな回避策について言及しています。https://code.google.com/p/android/issues/detail?id=181201で問題を追跡できます。DateFormat

于 2016-08-25T08:47:56.857 に答える
0

おそらく、独自の書式パターンを作成する必要があります。私の記憶が正しければ、使用するパターンは「HH:mm:ss.SSS」で、時、分、秒、および小数秒の 3 桁の精度を提供します。

SimpleDateFormat の API リファレンス ドキュメントを参照してください。

于 2013-04-13T00:16:09.510 に答える