Setar "Meia-noite" em um objeto do tipo Date

Bom dia, não estou conseguindo de forma alguma setar a hora de uma determinada Date como 00:00, ele sempre fica como 01:00
O meu codigo está assim:

Date d=new SimpleDateFormat("dd/MM/yyyy").parse("21/10/2012"); GregorianCalendar c=new GregorianCalendar(); c.setTime(d); c.set(Calendar.HOUR_OF_DAY, 0); d=new Date(c.getTimeInMillis()); java.sql.Date dd=new java.sql.Date(c.getTimeInMillis()); System.out.println(d);
O gregorian calendar até chega a ficar com a hora 0, mas quando boto o valor de volta pra data ele fica com a hora 1.
Alguem tem a solução pra isso?

Humm, por essa data ae, parece q tem algo a ver com horario de verão,

se vc colocar outra data 10/01/2012 por exemplo, ele consegue ficar no meia noite né?

Sim!
Setando esta data ele fica com a hora = 0
Existe alguma forma de considerar o horario de verão usando a classe Date ou Calendar?

Estranho, executei esse codigo seu e trouxe meia noite mesmo…

mas de qualquer forma, tenta isso:

http://www.guj.com.br/java/71816-problema-com-horario-de-verao

Estou enfrentando esse problema em alguns clientes desde o dia 21, que foi quando começou o horario de verão…
Encontrei um[color=yellow]a gambiarra[/color] código na internet que informa a jvm sobre as regras do horario de verão:

TimeZone.setDefault( new SimpleTimeZone( TimeZone.getDefault().getRawOffset(), "America/Sao_Paulo", Calendar.OCTOBER, //mes de inicio 21, //dia de inicio 0, 3600000*1+60000*0, // hora de inicio Calendar.FEBRUARY,//mes de fim 17, //dia de fim 0, 3600000*2+60000*0, // hora de fim 3600000));
Assim aparentemente funcionou, esta mostrando a hora certa… Mas não sei se esse é o jeito certo de tratar isso, ou se vai me trazer mais problemas mais pra frente.

Ueh, mas se timezone SaoPaulo, que dizer que os clientes sao brasileiros certo?

Aqui no Brasil nao tivemos o horario de 00:00 a 01:00 desse dia…

[quote=igor_ks]Ueh, mas se timezone SaoPaulo, que dizer que os clientes sao brasileiros certo?

Aqui no Brasil nao tivemos o horario de 00:00 a 01:00 desse dia…[/quote]
Na verdade não sei qual foi a hora que iniciou, então deixei essa hora mesmo, mas foi nesse dia 21/10 e vai terminar dia 17/02.


	    Calendar calendar = Calendar.getInstance();  
	        
	    calendar.set(Calendar.DAY_OF_MONTH,   dia);  
	    calendar.set(Calendar.MONTH, mes);  
	    calendar.set(Calendar.YEAR, ano);  
	    calendar.set(Calendar.HOUR_OF_DAY, 0);
	    calendar.set(Calendar.MINUTE, 0);
	    calendar.set(Calendar.SECOND, 0);
	    calendar.set(Calendar.MILLISECOND, 0);
	    
	    Date periodoInicial = calendar.getTime();