Problemas de cambios horarios con fechas en Java
Estos dÃas he tenido problemillas con el formato de fechas en Java. Resulta que si se le proporciona una fecha que coincida con un cambio de adelanto de hora y que no exista (por ejemplo el 25 de Marzo de 2007 a las 2 de la madrugada) entonces hace la conversión y la transforma a la hora cambiada (es decir, resultarÃa en el 25 de Marzo de 2007 a las 3 de la madrugada).
Es decir:
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
Date dt = sdf.parse("25/03/2007 02:00:00");
System.out.println(sdf.format(dt));
dt = sdf.parse("25/03/2007 03:00:00");
System.out.println(sdf.format(dt));
Resulta en:
25/03/2007 03:00:00
25/03/2007 03:00:00
Esto es muy molesto si se trabaja con un servidor que proporciona timestamps en UTC, que son independientes de los cambios horarios para el ahorro de energÃa. Para evitarlo es necesario indicar que se trabajará con fechas de la franja horaria GMT:
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
SimpleTimeZone stf = new SimpleTimeZone(0, "GMT");
sdf.setTimeZone(stz);
Date dt = sdf.parse("25/03/2007 02:00:00");
System.out.println(sdf.format(dt));
dt = sdf.parse("25/03/2007 03:00:00");
System.out.println(sdf.format(dt));
Ahora sÃ:
25/03/2007 02:00:00
25/03/2007 03:00:00
Deja un comentario
Una respuesta para “Problemas de cambios horarios con fechas en Java”Muchas gracias, justo lo que necesitaba