Estou tentando pegar um objeto java.util.Date que represente o horário no meridiano zero. Estou fazendo assim:
public class TestDate {
public static void main(String[] args) {
GregorianCalendar gc = new GregorianCalendar(TimeZone.getTimeZone("GMT+00:00"));
System.out.println(gc.get(GregorianCalendar.HOUR_OF_DAY) + ":" + gc.get(GregorianCalendar.MINUTE));
Date greenwhichDate = gc.getTime();
System.out.println(greenwhichDate);
}
}
E estou obtendo:
16:53
Thu Dec 16 14:53:07 BRST 2004
Quando, na minha máquina, são 14:53 mesmo. Na primeira linha o resultado é extamente o que eu quero, apesar de a gente estar em GMT-3 dá só duas horas de diferença por causa do horário de verão, mas o Date que eu imprimi usando gc.getTime() está apresentado o horário local. Ele não deveria representar o horário no GMT+0 também?
É esse mesmo o jeito certo de se obter um objeto Date que represente o horário de um fuso diferente?
Estou tentando pegar um objeto java.util.Date que represente o horário no meridiano zero. Estou fazendo assim:
public class TestDate {
public static void main(String[] args) {
GregorianCalendar gc = new GregorianCalendar(TimeZone.getTimeZone("GMT+00:00"));
System.out.println(gc.get(GregorianCalendar.HOUR_OF_DAY) + ":" + gc.get(GregorianCalendar.MINUTE));
Date greenwhichDate = gc.getTime();
System.out.println(greenwhichDate);
}
}
E estou obtendo:
16:53
Thu Dec 16 14:53:07 BRST 2004
Quando, na minha máquina, são 14:53 mesmo. Na primeira linha o resultado é extamente o que eu quero, apesar de a gente estar em GMT-3 dá só duas horas de diferença por causa do horário de verão, mas o Date que eu imprimi usando gc.getTime() está apresentado o horário local. Ele não deveria representar o horário no GMT+0 também?
É esse mesmo o jeito certo de se obter um objeto Date que represente o horário de um fuso diferente?[/quote]
Aham, o objeto java.util.Date não guarda a informação de fuso horário dentro dele; ele tenta (pelo menos tenta, ele depende do que obteve do sistema operacional) guardar sempre como UTC. É na hora de imprimir que o toString() pega o fuso horário default e imprime (por exemplo, na sua máquina, como BRST = Brazil SummerTime)