viernes, 28 de diciembre de 2007

Trabajar con Horas en Java

En esta ocasión, voy a escribir sobre el mecanismo que encontré en java, para poder especificar mediante programación, la zona horaria de la JVM.

Todo comienza cuando el mismo software al ser ejecutado en diferentes maquinas, al mismo tiempo, cada una retorna una hora diferente.

La solución a este problema (sin necesidad de alterar la configuración de los servidores) es muy simple: solo basta con tener un pequeño código estático en una clase de nuestro software, donde se indique al objeto TimeZone de java, cual es el TimeZone por defecto que se va a utilizar.... lo más simple es tomar el TimeZone preestablecido y alterarlo para cambiarle el offset respecto a GMT.

A continuación les incluyo un código donde se setea al objeto TimeZone un nuevo objeto SimpleTimeZone que se crea en el momento, al cual se le setea el ID del TimeZone actual, pero se indica en milisegundos el offset con respecto a GMT.

TimeZone actual = TimeZone.getDefault();
int milliseconds = ((Configuration.GMT_OFFSET * 60) * 60) * 1000;
String id = actual.getID();
SimpleTimeZone simpleTimeZone = new SimpleTimeZone(milliseconds,id);
TimeZone.setDefault(simpleTimeZone);

Es una solución muy simple que puede evitar muchos problemas.

Espero les sea útil.
Hasta la proxima!

2 comentarios:

Silvia Rabiales dijo...

hola quisiera saber a que libreria pertenece Configuration.GMT_OFFSET
por que no logro descubrir cual es la correcta.

Saludos

Gustavo Ferrari dijo...

Silvia, no es una clase de Java. En mi ejemplo la tuve que crear para colocar constantes. Puedes sustituir la por una constante tuya.
salu2