formateo de fechas

marta
27 de Octubre del 2005
hola!
a ver si alguien lo sabe..
tengo una variable con un numero de milisegundos que quiero pasar a formato de hora:minutos.
El caso es que esa variable es de tipo long, y lo que hago es un new Date de esa variable, y luego utilizo la clase:
SimpleDateFormat timeFormatter = new SimpleDateFormat("HH:mm");

pero es que resulta que en vez de poner la hora y minutos que corresponde para ese numero de milisegundos, lo que pone es una hora mas de lo que tiene que ser. eso es porque..(creo) al crear el new Date, pone en el manual:

Parameters:
date - the milliseconds since January 1, 1970, 00:00:00 GMT.

Supone que son los milisegundos medidos en el meridiano, y al estar aqui, me lo suma 1 hora??? pero no quiero que haga esto...
quiero que me ponga la hora correspondiente sin sumarlo una hora..
como lo hago??

gracias.



chuidiang
27 de Octubre del 2005
Hola:

Ese tipo de cosas efectivamente pasa por cosas del meridiano y demás. El time es el número de segundos desde el 1 de enero de 1970 a las 0 horas, 0 minutos, 0 segundos en el meridiano de greenwich.

En windows en lo de la hora puedes elegir el meridiano en el que estás. En linux se hace con la variable de entorno TZ. A la hora de convertir esos segundos a una fecha inteligible, suma la diferencia horaria entre la fecha de tu meridiano y el de greenwich.

Normalmente debería estar todo bien, así que revisa tu configuración horaria a ver si esta bien (de windows o la variable de entorno TZ).

Si aun asi sigues teniendo problemas, la clase SimpleDateFormat en su constructor admite un Locale, en el que dices cosas como el meridiano en el que estas. Puedes construir uno a tu medida y pasárselo.

Se buena.