1. ホーム
  2. java

[解決済み] 秒の値を時分秒に変換する?

2022-07-05 05:30:06

質問

秒の値(BigDecimal変数)をeditTextで"1 hour 22 minutes 33 seconds"のような文字列に変換しようとしています。

私はこれを試しました。

String sequenceCaptureTime = "";
BigDecimal roundThreeCalc = new BigDecimal("0");
BigDecimal hours = new BigDecimal("0");
BigDecimal myremainder = new BigDecimal("0");
BigDecimal minutes = new BigDecimal("0");
BigDecimal seconds = new BigDecimal("0");
BigDecimal var3600 = new BigDecimal("3600");
BigDecimal var60 = new BigDecimal("60");

(秒単位の値であるroundThreeCalcがあるので、ここで変換してみる)

hours = (roundThreeCalc.divide(var3600));
myremainder = (roundThreeCalc.remainder(var3600));
minutes = (myremainder.divide(var60));
seconds = (myremainder.remainder(var60));
sequenceCaptureTime =  hours.toString() + minutes.toString() + seconds.toString();

そして、editTextをsequnceCaptureTime Stringに設定しました。 しかし、これはうまくいきませんでした。毎回アプリが強制終了してしまいます。私はここで完全に私の深さから、任意のヘルプは非常に感謝されます。ハッピーコーディング!

どのように解決するのですか?

あなたは、より多くの運を持っている必要があります。

hours = roundThreeCalc.divide(var3600, BigDecimal.ROUND_FLOOR);
myremainder = roundThreeCalc.remainder(var3600);
minutes = myremainder.divide(var60, BigDecimal.ROUND_FLOOR);
seconds = myremainder.remainder(var60);

これは、各分割の後に小数点以下の値を落とします。

編集:うまくいかなかった場合は、これを試してみてください。 (私は今書いてテストしました)

public static int[] splitToComponentTimes(BigDecimal biggy)
{
    long longVal = biggy.longValue();
    int hours = (int) longVal / 3600;
    int remainder = (int) longVal - hours * 3600;
    int mins = remainder / 60;
    remainder = remainder - mins * 60;
    int secs = remainder;

    int[] ints = {hours , mins , secs};
    return ints;
}