He estado intentando convertir un valor de segundos (en una variable BigDecimal) a una cadena en un editText como "1 hora 22 minutos 33 segundos" o algo por el estilo.
He probado esto:
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");
(Tengo un roundThreeCalc que es el valor en segundos, así que trato de convertirlo aquí).
hours = (roundThreeCalc.divide(var3600));
myremainder = (roundThreeCalc.remainder(var3600));
minutes = (myremainder.divide(var60));
seconds = (myremainder.remainder(var60));
sequenceCaptureTime = hours.toString() + minutes.toString() + seconds.toString();
Luego configuré el editText en sequnceCaptureTime String. Pero eso no funcionó. Fuerza el cierre de la aplicación cada vez. Estoy totalmente fuera de mi alcance aquí, cualquier ayuda es muy apreciada. ¡Feliz codificación!
Respuestas:
Deberías tener más suerte con
Esto eliminará los valores decimales después de cada división.
Editar: Si eso no funcionó, intente esto. (Solo lo escribí y lo probé)
fuente
DateUtils.formatElapsedTime
...¿Es necesario utilizar un BigDecimal? Si no es necesario, usaría un int o long por segundos, y simplificaría un poco las cosas:
Sin embargo, es posible que desee rellenar cada uno para asegurarse de que sean valores de dos dígitos (o lo que sea) en la cadena.
fuente
String.format("%02d:%02d:%02d", hours, minutes, seconds);
String.format(Locale.ENGLISH, "%02d:%02d:%02d", hours, minutes, seconds)
DateUtils.formatElapsedTime
...DateUtils.formatElapsedTime(long)
, formatea un tiempo transcurrido en la forma "MM:SS
" o "H:MM:SS
". Devuelve la cadena que está buscando. Puedes encontrar la documentación aquífuente
Aquí está el código de trabajo:
fuente
DateUtils.formatElapsedTime
...Algo realmente útil en Java 8
fuente
Prefiero la biblioteca TimeUnit incorporada de Java
fuente
fuente
Esta es mi solución simple:
Test Results
:fuente
Me gusta mantener las cosas simples, por lo tanto:
El resultado será: 01 hora 23 minutos 20 segundos
fuente
Si quieres las unidades
h
,min
ysec
por un tiempo puedes usar esto:Son muchos operadores condicionales. El método devolverá esas cadenas:
fuente
Este código está funcionando bien:
fuente
Una forma agradable y fácil de hacerlo usando GregorianCalendar
Importe estos al proyecto:
Y entonces:
fuente
Yo uso esto:
fuente
Aquí está mi función para abordar el problema:
fuente
Sé que esto es bastante antiguo pero en Java 8:
fuente
por solo minutos y segundos usa esto
fuente
Utilizo esto en Python para convertir un flotador que representa segundos a horas, minutos, segundos y microsegundos. Es razonablemente elegante y útil para convertir a un tipo de fecha y hora a través de strptime para convertir. También podría extenderse fácilmente a intervalos más largos (semanas, meses, etc.) si es necesario.
fuente
He intentado de la mejor manera y con menos código, pero puede ser un poco difícil entender cómo escribí mi código, pero si eres bueno en matemáticas, es muy fácil.
horas de clase {
}
más encima es exacto!
fuente
Con Java 8, puede lograr fácilmente el tiempo en formato String desde largos segundos como,
Aquí, el valor dado es el máximo permitido para convertir (hasta 24 horas) y el resultado será
Ventajas: 1) No es necesario convertir manualmente y agregar 0 para un solo dígito
Contras: trabaja solo hasta 24 horas
fuente
Con Java 8, puede alcanzar fácilmente el tiempo en formato LocalTime desde largos segundos como,
Aquí, el valor dado es el máximo permitido para convertir (hasta 24 horas) y el resultado será
Ventajas: 1) No es necesario convertir manualmente y agregar 0 para un solo dígito
Contras: trabaja solo hasta 24 horas
fuente
Duración de java.time
El resultado de este fragmento es:
Si hubiera habido una fracción de segundo distinta de cero en el
BigDecimal
este código no habría funcionado tal como está, pero es posible que pueda modificarlo. El código funciona en Java 9 y versiones posteriores. En Java 8, la conversión deDuration
horas, minutos y segundos es un poco más prolija, consulte el enlace en la parte inferior para saber cómo. Le dejo a usted elegir la forma correcta en singular o plural de las palabras ( hora u horas , etc.).Enlaces
Duration
a días, horas, minutos y segundos en Java 8.fuente