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

新手上路,请多包涵

我一直在尝试将秒值(在 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 字符串。但这没有用。它每次都强制关闭应用程序。我在这里完全无法理解,非常感谢任何帮助。编码愉快!

原文由 rabbitt 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 585
2 个回答

你应该有更多的运气

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;
}

原文由 Haphazard 发布,翻译遵循 CC BY-SA 3.0 许可协议

是否有必要使用 BigDecimal?如果你不需要,我会使用 int 或 long 几秒钟,它会简化一些事情:

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

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

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

原文由 Geobits 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题