将秒值转换为小时分钟秒数?

我一直在尝试将秒的值(在BigDecimal变量中)转换为editText中的字符串,例如“1小时22分33秒”或类似的东西。

我试过这个:

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。但这并没有奏效。它每次都会强制关闭应用程序。我在这里完全超出了我的深度,任何帮助都非常感谢。祝您编码愉快!


答案 1

是否有必要使用大十进制?如果你不需要,我会使用int或long来表示几秒钟,这样可以简化一些事情:

hours = totalSecs / 3600;
minutes = (totalSecs % 3600) / 60;
seconds = totalSecs % 60;

timeString = String.format("%02d:%02d:%02d", hours, minutes, seconds);

不过,您可能希望填充每个值,以确保它们是字符串中的两位数值(或其他值)。


答案 2

DateUtils.formatElapsedTime(long),将经过的时间的格式设置为 “” 或 “”。它返回您要查找的字符串。您可以在此处找到文档MM:SSH:MM:SS