Get it on Google Play
30-05-2017
 

Formación JavaEE: Desarrollo de aplicaciones usando diferentes zonas horarias.

JavaEE TimeZone

JavaEE TimeZone

Cada vez es mas habitual trabajar en proyectos que se utilizan en diferentes zonas horarias y ya en pasados posts hemos hablado de como crear aplicaciones que trabajen con distintos tipos de moneda(Online) y multiidioma pero todavía no habíamos hablado de los cambios horarios.

Productos como Liferay, trabajan internamente solamente con GMT y pobre de ti que les cambies la configuración porque puede arder todo. Para Liferay y cualquier aplicación que trabajemos con distintas zonas horarias es importante saber como hacer cambios de hora en JavaEE.

En JavaEE se trabaja normalmente con la classe ‘java.util.Date’ que no contempla la zona horaria. Tenemos también la classe ‘java.util.Calendar’ que si contempla la zona horaria, pero no la conversión entre zonas horarias.

Para trabajar con zonas horarias la primera classe que hay que dominar es ‘java.util.Timezone’ que nos permite trabajar con zonas horarias. Por ejemplo podemos:

/* Obtener la zona horaria de la máquina virtual */
TimeZone default=TimeZone.getDefault();

/* Obtener la zona horaria de, por ejemplo, España(Peninsula) */
TimeZone default=TimeZone.getTimeZone("Europe/Madrid");

/* Obtener un array con todas las zona horarias disponibles */
String[] timeZoneIds=TimeZone.getAvailableIDs();

A partir de aquí, si queremos convertir un objeto java.util.Date(Que contiene fecha y hora) de una zona horaria a otra es muy fácil con la siguiente función:

public static Date convertTimeZone( Date d0, TimeZone tz1, TimeZone tz2 ) {
	Date d=new Date( d0.getTime() );
	d.setTime( d.getTime()-tz1.getOffset(d.getTime()) );
	d.setTime( d.getTime()+tz2.getOffset(d.getTime()) );
	
	return d;
	}

El Objeto TimeZone nos devuelve siempre el offset(Diferencia en milisegundos) respecto a GMT. De esta manera, retiramos la diferencia respecto de la primera zona horaria y le sumamos la diferencia respecto la segunda. Como el método ‘getOffset(‘ tiene en cuenta el momento actual esta solución también tiene en cuenta los cambios de hora entre invierno y verano en algunas zonas del planeta.

Ya veis! Fácil y rápido. Si os ha gustado no os olvidéis de ponerme un comentario, compartir y visitar mi nuevo canal de Youtube https://www.youtube.com/user/acoronadoc.

Si te ha servido, por favor comparte
 

Leave a Reply