Cara, é o seguinte:
Pelo que eu olhei no seu código, voce esta usando o parse da classe SimpleDateFormat, eu sempre fazia usando o método format dessa mesma classe passando como parâmetro a data que você quer formatar!
Um método que eu uso, que é um pouco mais trabalhoso, mas até agora não deu erro é o seguinte:
Usar o Date da classe sql.Date para fazer a conversão de uma String para um Date, depois que tiver esse objeto Date, passar essa variável como parâmetro para o método format da SimpleDateFormat para deixar ele do jeito que você quiser, mas não se esqueça que o format vai devolver uma String e não um Date, se quiser fazer alguma operação com Date, faça antes de aplicar a formatação desejada.
O problema de usar a sql.Date, é que a data tem que estar necessariamente no formato de banco de dados, ou seja: yyyy-mm-dd.
Para isso, se você tiver uma String, pode quebrá-la em substrings e adicionar os campos em cada uma variável, depois concatená-la novamente.
Vou mostrar como seria mais ou menos o código:
import java.util.Date;
public class TestaData{
Date data;
String dataCompleta;
public void transformaData( String dataUsuario )
{
String dia, mes, ano;
//dataUsuario == 29/05/2007
//Quebrando a String para dia, mes e ano separados
dia = dataUsuario.substring( 0 , 2 );
mes = dataUsuario.substring( 3 , 5 );
ano = dataUsuario.substring( 6 , 10 );
//Depois de separado, concatenar novamente, no formato
//do bando de dados
dataCompleta = ano + "-" + mes + "-" dia;
}//Fim do transformaData();
public void transformaParaDate ( String dataSQL )
{
try
{
//Esse método é estático, de modo que assim que voce
//acessa ele....
//A variável data ja sera setada com esse valor!!!
data = java.sql.Date().parse( dataSQL );
} catch( Exception e )
{
//Exception de transformacao
}
}// Fim da transformaParaDate();
public void operacaoData( Date dataEnviada )
{
/*
Nesse método pode passar a variável data que já está
com o valor alterado para ser usada aqui dentro.
*/
}
}
Lembre-se que a classe util.Date oferece muitos
métodos utéis para tratamento de datas.
Tem métodos para saber se a data referenciada é
antes de uma data passada, ou se é depois.
A classe SimpleDateFormat permite transformar a
data de várias formas, se você precisar da data
completa ( Terça-feira, 19 de maio de 2007.
Hora atual: 11:26:12 )
tem como fazer isso automaticamente, e ainda usando
recurso de internacionalização, onde se alterar o
indioma, para inglês por exemplo, o formato da data
também mudaria e ficaria o nome de mês por exemplo
em inglês!!!
Não sei se é o melhor caminho, mas pra mim funcionou em outras aplicações e nunca tive maiores problemas!!!
Pode ser que esse exemplo ai em cima de algum erro, afinal eu não compilei esse código para testar… coloquei o que eu me lembrei de cabeça na hora!!!
Espero ter ajudado um pouco!!!
Boa sorte!!!