En mi anterior post titulado Convirtiendo fechas entre zonas horarias puse un ejemplo de cómo poder convertir una fecha/hora de una zona horaria local a una distinta. Pero trabajando con el mismo proyecto encontré que debía convertir una fecha de la zona horaria UTC a la local, y entonces mi líder técnico me dió una solución sencilla cambiando solo una línea del código de ejemplo del post anterior, justo para hacer lo que necesitaba en ese momento:
En la tarea que estaba realizando leía un archivo de texto con el dato "fecha" como una serie de números: "20090921"+"1230", que representa el 21 de Septiembre de 2009 a las 12:30; por lo que tuve que usar el formato de fecha "yyyyMMddkkmm". Esta fecha que recibía del archivo representaba una fecha/hora en el horario GMT. Y esta hora la debía pasar a mi zona horaria local que es CST o UTC-6 (Tiempo del centro).
public void cambiarZonaHoraria( String fecha, String patron, String tz ) {
SimpleDateFormat format = new SimpleDateFormat( patron );
format.setTimeZone(TimeZone.getTimeZone( tz ));
try {
System.out.println( format.parse( fecha ) );
} catch (ParseException pe) {
pe.printStackTrace();
}
}
Lo que hace es muy sencillo:
- Primero crea una nueva instancia de SimpleDateFormat con el parámetro "patron" que le dice a la instancia que el texto que se le va a enviar está en ese formato, en mi caso "yyyyMMddkkmm".
- Luego, lo más importante de lo que intentamos hacer, le asignaremos a nuestro objeto format el TimeZone en el que está la hora que queremos convertir, en mi caso era GMT.
- Posteriormente, simplemente usamos el método parse(String) para convertir nuestro texto a un Date en la zona horaria local, en mi caso CST; por lo que el resultado final de este ejemplo es que el texto "200909211230" con el formato "yyyyMMddkkmm"lo cual representa "2oo9/09/21 12:30" en GMT pasa a ser "2009/09/21 6:30" en CST ya que son 6 horas menos a la referencia del Tiempo Universal Coordinado o UTC.
0 comentarios:
Publicar un comentario