SimpleDateFormat: transformar milisegundos --> hh:mm:ss
Saludos,
Tengo un pequeño problema con un formateo de tiempo. Tengo un long que vale 6.000.000 de milisegundos, y quiere formatearlo a hh:mm:ss. Según las cuentas que hecho con la calculadora esto equivaldrÃa a 100 minutos, o lo que es lo mismo, 01:40:00, en el formato que yo desearÃa, pero siempre, me saca 02:40:00. El código que tengo es:
SimpleDateFormat sdf = new SimpleDateFormat ("hh:mm:ss");
long tiempoRestante = 6.000.000; // Este valor se saca de BBDD
Date tiempoRestanteDate = new Date(tiempoRestante);
String tiempoRestanteString = sdf.format(tiempoRestanteDate);
Al imprimir la variable tiempoRestanteString aparece el valor: 02:40:00. He probado con todos los patterns posibles (hh:mm:ss, HH:mm:ss, kk:mm:ss, KK:mm:ss, pero en todos obtengo el mismo resultado. Alguien puede decirme por qué ocurre esto, o donde me estoy equivocando?
Muchas gracias por vuestra ayuda.
Tengo un pequeño problema con un formateo de tiempo. Tengo un long que vale 6.000.000 de milisegundos, y quiere formatearlo a hh:mm:ss. Según las cuentas que hecho con la calculadora esto equivaldrÃa a 100 minutos, o lo que es lo mismo, 01:40:00, en el formato que yo desearÃa, pero siempre, me saca 02:40:00. El código que tengo es:
SimpleDateFormat sdf = new SimpleDateFormat ("hh:mm:ss");
long tiempoRestante = 6.000.000; // Este valor se saca de BBDD
Date tiempoRestanteDate = new Date(tiempoRestante);
String tiempoRestanteString = sdf.format(tiempoRestanteDate);
Al imprimir la variable tiempoRestanteString aparece el valor: 02:40:00. He probado con todos los patterns posibles (hh:mm:ss, HH:mm:ss, kk:mm:ss, KK:mm:ss, pero en todos obtengo el mismo resultado. Alguien puede decirme por qué ocurre esto, o donde me estoy equivocando?
Muchas gracias por vuestra ayuda.
Hola jml_brujula, una de las cosas más complicadas es contar con determinada cantidad de tiempo.
Cuando usas 6 millones de milisegundos esto quiere decir 1:40 GMT y como España es GMT +1 pues te suma 1 hora a cualquier fecha/hora que obtenga.
PodrÃas usar una especie de truco para lograr tu objetivo:
int inOffset = Calendar.getInstance().getTimeZone().getOffset((new java.util.Date()).getTime());
SimpleDateFormat sdf = new SimpleDateFormat ("hh:mm:ss");
long tiempoRestante = 6000000; // Este valor se saca de BBDD
Date tiempoRestanteDate = new Date(tiempoRestante-inOffset);
String tiempoRestanteString = sdf.format(tiempoRestanteDate);
System.out.println(tiempoRestanteString);
Eso es restándole el la diferencia que hay con GMT (aquà en Colombia es -18000000) tiempoRestante.
En www.geocities.com/javacolombia hay dos artÃculos sobre el uso de fechas en java, seguramente te serán de ayuda.
Saludos.
Cuando usas 6 millones de milisegundos esto quiere decir 1:40 GMT y como España es GMT +1 pues te suma 1 hora a cualquier fecha/hora que obtenga.
PodrÃas usar una especie de truco para lograr tu objetivo:
int inOffset = Calendar.getInstance().getTimeZone().getOffset((new java.util.Date()).getTime());
SimpleDateFormat sdf = new SimpleDateFormat ("hh:mm:ss");
long tiempoRestante = 6000000; // Este valor se saca de BBDD
Date tiempoRestanteDate = new Date(tiempoRestante-inOffset);
String tiempoRestanteString = sdf.format(tiempoRestanteDate);
System.out.println(tiempoRestanteString);
Eso es restándole el la diferencia que hay con GMT (aquà en Colombia es -18000000) tiempoRestante.
En www.geocities.com/javacolombia hay dos artÃculos sobre el uso de fechas en java, seguramente te serán de ayuda.
Saludos.
Quisiera colgarme de esta respuesta para formular una pregunta.
Acá en Chile tenemos el mismo GMT que Colombia, pero estamos en horario de verano asi que se suma 1 hora . Cuando instancio un objeto Date y lo depliego, muestra lo siguiente:
04:19:23 PM
Cuando en realidad deberÃa ser:
05:19:23 PM (Hora Chilena)
¿Como puedo controlar ese pequeño gran detalle?
De antemano Gracias.
Acá en Chile tenemos el mismo GMT que Colombia, pero estamos en horario de verano asi que se suma 1 hora . Cuando instancio un objeto Date y lo depliego, muestra lo siguiente:
04:19:23 PM
Cuando en realidad deberÃa ser:
05:19:23 PM (Hora Chilena)
¿Como puedo controlar ese pequeño gran detalle?
De antemano Gracias.