[RESOLVIDO] Será um bug no "Calendar.add"?

Boa tarde…

sempre usei o Calendar.Add pra somar e subtrair datas, e sempre funcionou normal… porém, no dia 19/10/2013 ele simplesmente não adiciona!

Se eu setar dia 20/10/2013 ele já continua normal, mas se tiver menos que isso, ele só vai até dia 19/10/2013… não faz sentido nenhum, né?

o código da função é esse:

//parametro de entrada no formato "dd/MM/yyyy"
public String somadata(String texto) {

	if (texto.equals("")){
		String ano,mes,dia;
		ano = PegaData().substring(0, 4);
        mes = PegaData().substring(5,7);
        dia = PegaData().substring(8,10);
        texto = dia+"/"+mes+"/"+ano;
	}
	
	Date data;
	String texto2;
	texto2 = texto.substring(6, 10) + '-' + texto.substring(3, 5) + '-' + texto.substring(0, 2);
	data = Date.valueOf(texto2);
	
	Date dataFinal = data;
			  
	Calendar calendarData = Calendar.getInstance();  
	calendarData.setTime(dataFinal);  
	  
	int numeroDiasParaSubtrair = 1;  
	  
	calendarData.add(Calendar.DATE, numeroDiasParaSubtrair);  
	java.util.Date dataInicial = calendarData.getTime();
	
	SimpleDateFormat formatarDate = new SimpleDateFormat("dd/MM/yyyy");
	
	return formatarDate.format(dataInicial);
}

Se alguem tiver uns minutinhos, testa aí pra ver se acontece o mesmo… ou se eu errei em algum lugar aí no meio… mas acho estranho, pois todas as outras datas funcionam…

achei o problema…

é por causa do horário de verão que isso acontece… fiz o teste tentando com a data do ano passado aqui, que entrou o horario de verão em 2012 dia 20/10… e ele acontece a mesma coisa…

debugando melhor eu vi que ele somou 23 horas ao invés de 1 dia inteiro…

dá a entender então que ele soma o dia em milisegundos, que no caso, o dia anterior do horario de verão teve 1 hora a menos, daí ele não passa…

bom, fica aí a dica pra alguem que passar pelo mesmo problema… o jeito agora é “gambiarrar” xD