Tenho tentado converter um valor de segundos (em uma variável BigDecimal) em uma string em um editText como "1 hora 22 minutos 33 segundos" ou algo do tipo.
Eu tentei isso:
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");
(Eu tenho um roundThreeCalc que é o valor em segundos, então tento convertê-lo aqui.)
hours = (roundThreeCalc.divide(var3600));
myremainder = (roundThreeCalc.remainder(var3600));
minutes = (myremainder.divide(var60));
seconds = (myremainder.remainder(var60));
sequenceCaptureTime = hours.toString() + minutes.toString() + seconds.toString();
Em seguida, defino editText como sequnceCaptureTime String. Mas isso não funcionou. Ele forçou o fechamento do aplicativo todas as vezes. Estou totalmente perdido aqui, qualquer ajuda será muito apreciada. Boa codificação!
java
android
string
android-edittext
bigdecimal
coelho
fonte
fonte
Respostas:
Você deveria ter mais sorte com
Isso eliminará os valores decimais após cada divisão.
Edit: Se isso não funcionar, tente isso. (Acabei de escrever e testar)
fonte
DateUtils.formatElapsedTime
...É necessário usar um BigDecimal? Se você não precisar, eu usaria um int ou long por segundos e isso simplificaria um pouco as coisas:
Você pode querer preencher cada um para ter certeza de que são valores de dois dígitos (ou qualquer outro) na string.
fonte
String.format("%02d:%02d:%02d", hours, minutes, seconds);
String.format(Locale.ENGLISH, "%02d:%02d:%02d", hours, minutes, seconds)
DateUtils.formatElapsedTime
...DateUtils.formatElapsedTime(long)
, formata um tempo decorrido no formato "MM:SS
" ou "H:MM:SS
". Ele retorna a String que você está procurando. Você pode encontrar a documentação aquifonte
Aqui está o código de trabalho:
fonte
DateUtils.formatElapsedTime
...Algo realmente útil em Java 8
fonte
Eu prefiro a biblioteca TimeUnit do java
fonte
fonte
Esta é minha solução simples:
Test Results
:fonte
Eu gosto de manter as coisas simples, portanto:
O resultado será: 01 hora 23 minutos e 20 segundos
fonte
Se você quiser as unidades
h
,min
esec
por um período, você pode usar isto:São muitos operadores condicionais. O método retornará essas strings:
fonte
Este código está funcionando bem:
fonte
Uma maneira fácil e agradável de fazer isso usando GregorianCalendar
Importe-os para o projeto:
E depois:
fonte
Eu uso isso:
fonte
Esta é minha função para resolver o problema:
fonte
Eu sei que isso é muito antigo, mas em java 8:
fonte
por apenas alguns minutos e segundos, use isso
fonte
Eu uso isso em python para converter um float que representa segundos em horas, minutos, segundos e microssegundos. É razoavelmente elegante e útil para converter para um tipo datetime por meio do strptime. Também pode ser facilmente estendido para intervalos maiores (semanas, meses, etc.), se necessário.
fonte
Eu tentei da melhor maneira e menos código, mas pode ser um pouco difícil de entender como eu escrevi meu código, mas se você é bom em matemática é tão fácil
horas de aula {
}
mais sobre isso é preciso!
fonte
Com o Java 8, você pode facilmente obter tempo no formato String de longos segundos como,
Aqui, o valor fornecido tem permissão máxima para conversão (até 24 horas) e o resultado será
Prós: 1) Não há necessidade de converter manualmente e acrescentar 0 para um único dígito
Contras: trabalhar apenas por até 24 horas
fonte
Com o Java 8, você pode facilmente obter tempo no formato LocalTime em longos segundos, como
Aqui, o valor fornecido tem permissão máxima para conversão (até 24 horas) e o resultado será
Prós: 1) Não há necessidade de converter manualmente e acrescentar 0 para um único dígito
Contras: trabalhar apenas por até 24 horas
fonte
Duração de java.time
A saída deste snippet é:
Se houvesse uma fração de segundo diferente de zero no
BigDecimal
código, esse código não funcionaria como está, mas você poderá modificá-lo. O código funciona em Java 9 e posterior. Em Java 8, a conversão deDuration
horas, minutos e segundos é um pouco mais prolixa, consulte o link na parte inferior para saber como. Estou deixando para você escolher a forma correta de singular ou plural das palavras ( hora ou horas , etc.).Links
Duration
para dias, horas, minutos e segundos em Java 8.fonte