CONSULTA JAVA TIMEZONE

196 views
Skip to first unread message

8dud...@gmail.com

unread,
Apr 28, 2009, 2:26:22 PM4/28/09
to JavaSOS
Gente.. tengo una duda con los timezone a ver si pueden ayudarme...

Lo que quiero hacer es lo suguiente, guardar en una tabla de mysql e
un new date();

Pero con un timezone con gmt-0

Entonces mi problema es el siguinte.


si yo pongo

Calendar cal = Calendar.getInstance();
cal.setTimeZone(TimeZone.getTimezone("GMT-0"));

si yo imprimo en pantalla o quiero guardar en la bd un cal.getTime();

En vez de guardarme la fecha y hora con el gmt-0, lo guarda o lo
imprime en pantalla con el gmt que tengo en windows, osea gmt-3 buenos
aires y todo eso..


pero si encambio hago lo siguiente.

Calendar cal = Calendar.getInstance();
TimeZone.setDefault(TimeZone.getTimezone("GMT-0"));

osea que en vez de setearle al calendar el timezone se lo seteo creo
yo a toda la maquina virutal

si depsues quiero imprimir en pantalla o guardar en la base lo hace
bien..

pero es una cagada, porque estoy cambiando el timezone de la maquina
virtual y yo lo unico que quiero es cambiar el timezone de ese
calendario.

alguien sabe como puedo solucionar esto?

gracias!







Favio DeMarco

unread,
Apr 28, 2009, 2:41:13 PM4/28/09
to jav...@googlegroups.com
La base de datos ya guarda las fechas en un timezone de referencia:
<http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html>
Tu problema parece ser más de vista que de persistencia.
Tal vez te interese:

Per-connection time zones. Each client that connects has its own time
zone setting, given by the session time_zone variable. Initially, the
session variable takes its value from the global time_zone variable,
but the client can change its own time zone with this statement:

mysql> SET time_zone = timezone;

2009/4/28 8dud...@gmail.com <8dud...@gmail.com>:

the crazy doubt

unread,
Apr 28, 2009, 4:43:09 PM4/28/09
to JavaSOS
le cambie el timezone al mysql, y ni pelota sigue escribiendo la hora
con gmt de buenos aires y no con gmt 0 como yo kiero..
tengo que solucionarlo desde java para que ya mande la hora correta...

alguna otra ayuda?

On 28 abr, 15:41, Favio DeMarco <fav...@gmail.com> wrote:
> La base de datos ya guarda las fechas en un timezone de referencia:
> <http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html>
> Tu problema parece ser más de vista que de persistencia.
> Tal vez te interese:
>
> Per-connection time zones. Each client that connects has its own time
> zone setting, given by the session time_zone variable. Initially, the
> session variable takes its value from the global time_zone variable,
> but the client can change its own time zone with this statement:
>
> mysql> SET time_zone = timezone;
>
> 2009/4/28 8dudad...@gmail.com <8dudad...@gmail.com>:

fav

unread,
Apr 28, 2009, 7:05:29 PM4/28/09
to JavaSOS
Creo que me entendiste mal, me parece que el problema es de
presentación, no de representación. Guardar en la base de datos "Tue
Apr 28 19:50:33 GMT-03:00 2009" ó "Tue Apr 28 22:50:33 GMT-00:00 2009"
es equivalente, representan lo mismo.

Si querés que al hacer un query la base te devuelva la fecha en
determinado timezone, podés usar algo como:

$ echo "SET time_zone = timezone; select mi_fecha from mi_tabla;" |
mysql ...

con los parámetros adecuados.
Si querés mostrar una fecha con distinto timezone desde java, se lo
tenés que informar al formatter que estás usando

DateFormat formatter = DateFormat.getDateTimeInstance();
System.out.println(formatter.format(cal.getTime())); // Apr 28, 2009
7:50:33 PM

formatter.setTimeZone(TimeZone.getTimeZone("GMT-0"));
System.out.println(formatter.format(cal.getTime())); // Apr 28, 2009
10:50:33 PM

the crazy doubt

unread,
Apr 29, 2009, 9:49:03 AM4/29/09
to JavaSOS
Fav buenisimo, ahora para tirar por consola la representacion de la
fecha.. listo me fuinciona perfecto..

ahora con respecto a la BD

yo quiero guardar en la BD de una con el gmt-0, osea no quiero hacer
una consulta pidiendo el timezone correspondiente, quiero que se grabe
de una con el timezone correspondiente.
lo hice asi y funciona mira:

DateFormat formater = DateFormat.getDateTimeInstance();
formater.setTimeZone(TimeZone.getTimeZone("GMT-0"));

//Seteo el time zone con gmt 0
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT-0"));


setFechaLectura(new Date( formater.format( cal.getTime() )));
setFechaRecepcion(new Date( formater.format( cal.getTime() )));

Ahi me funciona perfecto, lo unico que estoy haciendo un new Date( de
un String) y me dice que el new Date de un string esta deprecated,
osea esta todo ok lo puedo dejar asi que ya me anda.. pero que otra
solucion se te ocurre?
gracias!

the crazy doubt

unread,
Apr 29, 2009, 9:58:04 AM4/29/09
to JavaSOS
Fav buenisimo, ahora para tirar por consola la representacion de la
fecha.. listo me fuinciona perfecto..

ahora con respecto a la BD

yo quiero guardar en la BD de una con el gmt-0, osea no quiero hacer
una consulta pidiendo el timezone correspondiente, quiero que se grabe
de una con el timezone correspondiente.
lo hice asi y funciona mira:

DateFormat formater = DateFormat.getDateTimeInstance();
formater.setTimeZone(TimeZone.getTimeZone("GMT-0"));

//Seteo el time zone con gmt 0
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT-0"));


setFechaLectura(new Date( formater.format( cal.getTime() )));
setFechaRecepcion(new Date( formater.format( cal.getTime() )));

Ahi me funciona perfecto, lo unico que estoy haciendo un new Date( de
un String) y me dice que el new Date de un string esta deprecated,
osea esta todo ok lo puedo dejar asi que ya me anda.. pero que otra
solucion se te ocurre?
gracias!

On 28 abr, 20:05, fav <fav...@gmail.com> wrote:
Reply all
Reply to author
Forward
0 new messages