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

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

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-01 19:09:30253ブラウズ

How to Convert Milliseconds to

ミリ秒を「hh:mm:ss」にフォーマットしています

問題:

カウントダウン タイマーを使用している開発者が次のような問題に遭遇しました。ミリ秒を目的の「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 サイトの他の関連記事を参照してください。

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