Estoy tratando de convertir un valor largo ( número de milisegundos transcurridos desde el 1/1/1970, es decir, Epoch ) a la hora del formato h:m:s:ms
.
El valor largo que uso como marca de tiempo, lo obtengo del campo timestamp
de un evento de registro de log4j.
Hasta ahora he intentado lo siguiente y falla:
logEvent.timeStamp/ (1000*60*60)
TimeUnit.MILLISECONDS.toMinutes(logEvent.timeStamp)
pero obtengo un valor incorrecto:
1289375173771 for logEvent.timeStamp
358159 for logEvent.timeStamp/ (1000*60*60)
21489586 for TimeUnit.MILLISECONDS.toMinutes(logEvent.timeStamp)
¿Cómo hago esto?
SimpleDateFormat
, use la importación como sigue:import java.text.*;
java.util.Date
,java.util.Calendar
yjava.text.SimpleDateFormat
ahora son heredadas , suplantadas por las clases java.time integradas en Java 8 y posteriores. Ver Tutorial de Oracle . Ver: stackoverflow.com/a/4142428/642706fuente
Le mostraré tres formas de (a) obtener el campo de minutos de un valor largo, y (b) imprimirlo usando el formato de Fecha que desee. Uno usa java.util.Calendar , otro usa Joda-Time , y el último usa el marco java.time integrado en Java 8 y versiones posteriores.
El marco java.time suplanta las antiguas clases de fecha y hora agrupadas, y está inspirado en Joda-Time, definido por JSR 310, y ampliado por el proyecto ThreeTen-Extra.
El marco java.time es el camino a seguir cuando se usa Java 8 y versiones posteriores. De lo contrario, como Android, use Joda-Time. Las clases java.util.Date/.Calendar son notoriamente problemáticas y deben evitarse.
java.util.Date & .Calendar
Joda-Time
Salida:
java.time
fuente
DateTimeZone
objeto. De esta manera:new DateTime( timestamp, DateTimeZone.forID( "America/Montreal" ) )
Es posible usar apache commons (commons-lang3) y su clase DurationFormatUtils.
Por ejemplo:
Espero que pueda ayudar ...
fuente
fuente
TimeUnit.MILLISECONDS.toSeconds()
Por ejemplo, convierte milisegundos a la misma duración en segundos o los segundos restantes después de restar horas y minutos? La solución requiere lo último.fuente
Haciendo
te dará horas, no minutos. Tratar:
y terminarás con la misma respuesta que
fuente
Prueba esto:
fuente
fuente