問題:
カウントダウン タイマーを使用している開発者が次のような問題に遭遇しました。ミリ秒を目的の「hh:mm:ss」形式に変換するのが困難です。最初の試みでは、特に 1 時間を超える値の場合に、時刻が正しく表示されませんでした。
解決策:
主な問題は、次を使用して時間をミリ秒に変換する際の論理的欠陥に起因していました。時間ではなく分で。具体的には、使用されたコード:
TimeUnit.MINUTES.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))
ですが、本来は次のようになります:
TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))
コードのデモ:
修正されたコード スニペットは次のとおりです。これは、ミリ秒を "hh:mm:ss" に正しくフォーマットします:
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)));
テスト ケース:
long millis = 3600000; String hms = ... // Replace with revised code from above System.out.println(hms); // Expected output: 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));
どちらのバリエーションも正しい「hh:mm:ss」形式を実現し、TimeUnit API を利用して変換をシームレスに処理します。
以上がJavaでミリ秒を「hh:mm:ss」形式に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。