[解決済み】ミリ秒を "hh:mm:ss "形式に変換するには?
2022-04-08 02:15:06
質問
困っています。偶然見つけた
これ
というスレッドで、カウントダウンタイマーをどのようにフォーマットするか考えてみました。
hh:mm:ss
.
以下は私の試みです。
//hh:mm:ss
String.format("%02d:%02d:%02d",
TimeUnit.MILLISECONDS.toHours(millis),
TimeUnit.MILLISECONDS.toMinutes(millis) -
TimeUnit.MINUTES.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),
TimeUnit.MILLISECONDS.toSeconds(millis) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
そこで、次のような値を試してみると
3600000ms
となります。
01:59:00
であるべきなので、これは誤りです。
01:00:00
. 明らかに私のロジックに何か問題があるのですが、今のところ、それが何なのかがわかりません
どなたか助けてください。
編集
修正しました。以下は、ミリ秒の正しい書式を
hh:mm:ss
フォーマット
//hh:mm:ss
String.format("%02d:%02d:%02d",
TimeUnit.MILLISECONDS.toHours(millis),
TimeUnit.MILLISECONDS.toMinutes(millis) -
TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),
TimeUnit.MILLISECONDS.toSeconds(millis) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis))));
問題はこれでした
TimeUnit.MINUTES.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))
. 本来はこうであるべきだ。
TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))
の代わりに
解決方法は?
あなたは 本当に 近い。
String.format("%02d:%02d:%02d",
TimeUnit.MILLISECONDS.toHours(millis),
TimeUnit.MILLISECONDS.toMinutes(millis) -
TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)), // The change is in this line
TimeUnit.MILLISECONDS.toSeconds(millis) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
を使用して時間をミリ秒に変換していました。 分 の代わりに 時間 .
ちなみに、私はあなたの
TimeUnit
API :)
以下はテストコードです。
public static void main(String[] args) throws ParseException {
long millis = 3600000;
String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis),
TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),
TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
System.out.println(hms);
}
出力します。
01:00:00
私は、上記の私のコードは、引き算の代わりにモジュラス除算を使用することによって、大幅に簡素化できることに気づきました。
String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis),
TimeUnit.MILLISECONDS.toMinutes(millis) % TimeUnit.HOURS.toMinutes(1),
TimeUnit.MILLISECONDS.toSeconds(millis) % TimeUnit.MINUTES.toSeconds(1));
まだ
TimeUnit
すべてのマジックバリューにAPIを使用し、まったく同じ出力を与えています。
関連
-
[解決済み] android.os.NetworkOnMainThreadException' を修正するにはどうすればよいですか?
-
[解決済み] ストリングビルダー.イコール Java
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
-
[解決済み] スタックトレースを文字列に変換するにはどうすればよいですか?
-
[解決済み] JavaScriptでUnixのタイムスタンプを時刻に変換する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] トークンのシンタックスエラー、これらのトークンを削除してください [closed].
-
[解決済み] このフォーマット(Tue Jul 13 00:00:00 CEST 2010)の日付をJavaの日付に変換する方法(文字列はalfrescoのプロパティに由来しています)
-
[解決済み] javascriptでExpression言語を使うには?
-
[解決済み] init-paramとcontext-param
-
[解決済み] Maven: assembly-pluginが全く実行されない
-
[解決済み] java swingアプリケーションでJCEがプロバイダBCを認証できない
-
[解決済み] java.io.IOException。DER長の短い読み取り
-
[解決済み] x--やx++はここで何をするのですか?
-
[解決済み] Javaでミリ秒を「X分X秒」に変換するには?
-
[解決済み】AndroidプロジェクトでThreeTenABPを使用する方法