ホームページ  >  記事  >  Java  >  ミリ秒を「hh:mm:ss」形式に変換するにはどうすればよいですか?

ミリ秒を「hh:mm:ss」形式に変換するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-02 03:51:021000ブラウズ

How to Convert Milliseconds to

ミリ秒を "hh:mm:ss" 形式に変換する

ミリ秒を使い慣れた " 形式に変換する必要がある場合があります。 hh:mm:ss" 形式。通常は時間を表すために使用されます。これは、カウントダウン タイマーなどのアプリケーションでは一般的な要件となる可能性があります。

問題を理解する

次のコードを使用して変換を実行しようとした可能性があります:

<code class="java">//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)));</code>

ただし、このコードは期待どおりに動作しない可能性があります。たとえば、3600000 ミリ秒 (1 時間を表す) を入力すると、正しい「01:00:00」ではなく「01:59:00」が返されます。

問題の特定

詳しく調べると、問題は次の行にあります。

<code class="java">TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.MINUTES.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))</code>

ここでは、時間ではなく分を使用して時間をミリ秒に変換しています。

修正ロジック

正しいコードでは、代わりに TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)) を使用する必要があります。

<code class="java">//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)));</code>

この変更により、時間変換が確実に行われます。正しく実行すると、3600000 ミリ秒で「01:00:00」という望ましい結果が得られます。

簡易バージョン

を使用すると、コードをさらに簡略化できます。減算の代わりにモジュラス除算:

<code class="java">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));</code>

このバージョンは、同じ正確な結果を提供しながら効率的です。

以上がミリ秒を「hh:mm:ss」形式に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。