rabbitt - 11 months ago 58

Java Question

I've been trying to convert a value of seconds (in a BigDecimal variable) to a string in an editText like "1 hour 22 minutes 33 seconds" or something of the kind.

I've tried this:

`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");

(I have a roundThreeCalc which is the value in seconds so I try to convert it here.)

`hours = (roundThreeCalc.divide(var3600));`

myremainder = (roundThreeCalc.remainder(var3600));

minutes = (myremainder.divide(var60));

seconds = (myremainder.remainder(var60));

sequenceCaptureTime = hours.toString() + minutes.toString() + seconds.toString();

Then I set the editText to sequnceCaptureTime String.

But that didn't work. It force closed the app every time. I am totally out of my depth here, any help is greatly appreciated. Happy coding!

Answer

You should have more luck with

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

This will drop the decimal values after each division.

Edit: If that didn't work, try this. (I just wrote and tested it)

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

Source (Stackoverflow)