Date + Horario de verao

Olá a todos,

Alguem saberia me explicar com que finalidade o Java adiciona uma hora na instancia de uma Date criada em 10/10/2010, que supostamente é o dia em que começa o horário de verão? Sei que este problema ocorre quando o “Ajustar automáticamente o horário de verão” esta clicado, mas eu não posso confiar na configuração do windows.

por favor, preciso muito de uma ajudinha com isto. Valeu…

… muito grato a quem puder trocar um ideia comigo… alguem se habilita :?:

Aqui na empresa o sistema de persistencia trata as horas, pra não dar esses paus com horario de verão. o tipo que eles criaram pra data verifica se estã dentro do horario de verão e ajusta a hora, mas é tudo própio daqui

achei um post sobre o tema http://www.guj.com.br/posts/list/45189.java

valeu, obrigado por responder. Artigo muito bom, aprendi bastante. Mas ainda não tenho a menor idéia porque criar uma data em 2010/10/10 00:00:00 resulta em uma data em 2010/10/10 01:00:00. Não sei o que fazer com esta hora a mais.

Uma hora acrescentada a hora atual é o comportamento esperado quando o horario de verão esta em vigor.

Posta o codigo que vc usa pra criar a data.

olha ai um exemplo… ok, eu sei que este é o modo menos indicado, mas a culpa não é minha. Estou usando o GWT e este codigo vai ser compilado para javascript. O GWT não emula o DateFormat e nem a classe Calendar, ou seja estou limitado a usar a classe Date.

Quando eu crio a data 2010/10/10 16:00:00 BRT é porque meu compromisso é as 16:00 BRT horas. Horário de verão ou não, isto não muda o compromisso para as 17:00. A data só deveria ser convertida para alguem que esteja em outro fuso horário, ai sim a diferença de fuso e de horário de verão devem ser consideradas. Bom, pelo menos isto é o que eu entendo.

[code] public void testDST() throws ParseException {
Date d1 = new Date(2010 - 1900, 8, 10);
Date d2 = new Date(2010 - 1900, 9, 10, 0, 0, 0);
Date d3 = new Date(2010 - 1900, 10, 10);
Date d4 = new Date(2010 - 1900, 11, 10);
Date d5 = new Date(2011 - 1900, 0, 10);
Date d6 = new Date(2011 - 1900, 1, 10);

	System.out.println("d1 = " + d1);  //  d1 = Fri Sep 10 00:00:00 BRT 2010
	System.out.println("d2 = " + d2);  //  d2 = Sun Oct 10 01:00:00 BRST 2010
	System.out.println("d3 = " + d3);  //  d3 = Wed Nov 10 00:00:00 BRST 2010
	System.out.println("d4 = " + d4);  //  d4 = Fri Dec 10 00:00:00 BRST 2010 
	System.out.println("d5 = " + d5);  //  d5 = Mon Jan 10 00:00:00 BRST 2011
	System.out.println("d6 = " + d6);  //  d6 = Thu Feb 10 00:00:00 BRST 2011
}

[/code]

O problema é que vc precisaria criar o Date usando DateFormat, Calendar, ou Date(long ms-ate-a-data-desejada). Seu código esta depreciado desde o Java 1.2.

editado: Na verdade, desde o Java 1.1.

então, eu sei disto, mas este codigo vai ser compilado pelo GWT (Google Web Toolkit) para javascript e o GWT não emula as classes DateFormat e Calendar apenas a classe Date. Não sei como outros desenvolvedores GWT estão fazendo…

Provavelmente usando o construtor Date(long date).