我一直在尝试将秒值(在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字符串。但这并不管用。它每次都会强制关闭应用程序。我在这里完全超出了我的能力范围,任何帮助都是非常感谢的。祝你编码愉快!
发布于 2011-05-25 10:39:46
你应该有更多的运气
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;
}发布于 2011-05-25 10:44:18
有必要使用BigDecimal吗?如果不需要,我会使用int或long来表示秒,这样会让事情变得简单一点:
hours = totalSecs / 3600;
minutes = (totalSecs % 3600) / 60;
seconds = totalSecs % 60;
timeString = String.format("%02d:%02d:%02d", hours, minutes, seconds);不过,您可能希望填充每个值,以确保它们是字符串中的两位数(或其他值)。
发布于 2015-10-13 22:15:48
DateUtils.formatElapsedTime(long),将经过的时间格式化为"MM:SS“或"H:MM:SS”。它返回您正在查找的字符串。您可以找到文档here
https://stackoverflow.com/questions/6118922
复制相似问题