나는 초 값 (BigDecimal 변수)을 “1 시간 22 분 33 초”와 같은 editText의 문자열로 변환하려고했습니다.
나는 이것을 시도했다 :
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;
}
답변
BigDecimal을 사용해야합니까? 필요하지 않다면 int 또는 long을 몇 초 동안 사용하고 약간 단순화합니다.
hours = totalSecs / 3600;
minutes = (totalSecs % 3600) / 60;
seconds = totalSecs % 60;
timeString = String.format("%02d:%02d:%02d", hours, minutes, seconds);
하지만 문자열에서 두 자리 값 (또는 기타)인지 확인하기 위해 각각을 채울 수 있습니다.
답변
DateUtils.formatElapsedTime(long)
, ” MM:SS
“또는 ” H:MM:SS
” 형식으로 경과 시간을 형식화합니다 . 찾고있는 문자열을 반환합니다. 여기 에서 설명서를 찾을 수 있습니다.
답변
다음은 작동 코드입니다.
private String getDurationString(int seconds) {
int hours = seconds / 3600;
int minutes = (seconds % 3600) / 60;
seconds = seconds % 60;
return twoDigitString(hours) + " : " + twoDigitString(minutes) + " : " + twoDigitString(seconds);
}
private String twoDigitString(int number) {
if (number == 0) {
return "00";
}
if (number / 10 == 0) {
return "0" + number;
}
return String.valueOf(number);
}
답변
Java 8에서 정말 유용한 것
import java.time.LocalTime;
private String ConvertSecondToHHMMSSString(int nSecondTime) {
return LocalTime.MIN.plusSeconds(nSecondTime).toString();
}
답변
Java의 내장 TimeUnit 라이브러리를 선호 합니다.
long seconds = TimeUnit.MINUTES.toSeconds(8);
답변
private String ConvertSecondToHHMMString(int secondtTime)
{
TimeZone tz = TimeZone.getTimeZone("UTC");
SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");
df.setTimeZone(tz);
String time = df.format(new Date(secondtTime*1000L));
return time;
}