o problema é o seguinte eu tenho um formulario onde ha um campo para preencher uma data .eu queria saber se da para alguem me mostrar um código onde se possa verificar se a data digitada é valida ou não,antes de salvar no banco.valeu 
Data
2 Respostas
[url]http://www.guj.com.br/posts/list/23550.java[/url]
[url]http://www.guj.com.br/posts/list/2143.java[/url]
ou
public boolean ValidaData(String data)
{
boolean retorno = true;
int dia, mes, ano, dias_mes = 28;
dia = mes = ano = 0;
data = data.replace('-', ' ').replace('/', ' ').replace(':', ' ');
data = data.replaceAll(" ", "");
if ((data.length() != 8) && (data.length() != 21) && (data.length() != 22))
retorno = false;
else
{
//Verifica Dia da Semana.
if ((data.length() == 21) || (data.length() == 22))
{
if((data.substring(0, 3).equals("Mon")) || (data.substring(0, 3).equals("Tue")) || (data.substring(0, 3).equals("Wed"))
|| (data.substring(0, 3).equals("Thu")) || (data.substring(0, 3).equals("Fri")) || (data.substring(0, 3).equals("Sat"))
|| (data.substring(0, 3).equals("Sun")))
{}
else
retorno = false;
//Verifica mes.
if((data.substring(3, 6).equals("Jan")) || (data.substring(3, 6).equals("Feb")) || (data.substring(3, 6).equals("Mar"))
|| (data.substring(3, 6).equals("Apr")) || (data.substring(3, 6).equals("May")) || (data.substring(3, 6).equals("Jun"))
|| (data.substring(3, 6).equals("Jul")) || (data.substring(3, 6).equals("Aug")) || (data.substring(3, 6).equals("Sep"))
|| (data.substring(3, 6).equals("Oct")) || (data.substring(3, 6).equals("Nov")) || (data.substring(3, 6).equals("Dec")))
{}
else
retorno = false;
//Verifica Dias no Mes.
if((data.substring(3, 6).equals("Jan")) || (data.substring(3, 6).equals("Mar")) || (data.substring(3, 6).equals("May"))
|| (data.substring(3, 6).equals("Jul")) || (data.substring(3, 6).equals("Aug")) || (data.substring(3, 6).equals("Oct"))
|| (data.substring(3, 6).equals("Dec")))
{
dias_mes = 31;
}
//Verifica Dias no Mes.
if((data.substring(3, 6).equals("Apr")) || (data.substring(3, 6).equals("Jun")) || (data.substring(3, 6).equals("Set"))
|| (data.substring(3, 6).equals("Nov")))
{
dias_mes = 30;
}
//Verifica Dias no Mes.
if((data.substring(3, 6).equals("Feb")) && (Integer.parseInt(data.substring(17, 21)) % 4 == 0))
{
dias_mes = 29;
}
//Verifica dia.
if(ValidaNumero(data.substring(6, 8)) == true){
dia = Integer.parseInt(data.substring(6, 8));
if (dias_mes == 31)
if ((dia > 31) || (dia < 1))
retorno = false;
if(dias_mes == 30)
if ((dia > 30) || (dia < 1))
retorno = false;
if(dias_mes == 29)
if ((dia > 29) || (dia < 1))
retorno = false;
if(dias_mes == 28)
if ((dia > 28) || (dia < 1))
retorno = false;
}
else
retorno = false;
//Verifica Hora
if((Integer.parseInt(data.substring(8, 10)) < 0) || (Integer.parseInt(data.substring(8, 10)) > 24))
retorno = false;
//Verifica Minuto
if((Integer.parseInt(data.substring(10, 12)) < 0) || (Integer.parseInt(data.substring(10, 12)) > 59))
retorno = false;
//Verifica Segundo
if((Integer.parseInt(data.substring(12, 14)) < 0) || (Integer.parseInt(data.substring(12, 14)) > 59))
retorno = false;
//Verifica Ano
if((Integer.parseInt(data.substring(data.length() - 4, data.length())) < 1970) || (Integer.parseInt(data.substring(data.length() - 4, data.length())) > 2099))
retorno = false;
}
else
{
//Verifica ano.
if(ValidaNumero(data.substring(4, 8)) == true){
ano = Integer.parseInt(data.substring(4, 8));
if ((ano > 2099) || (ano < 1900))
retorno = false;
}
else
retorno = false;
//Verifica mes
if(ValidaNumero(data.substring(2, 4)) == true){
mes = Integer.parseInt(data.substring(2, 4));
if ((mes > 12) || (mes < 1))
retorno = false;
if ((mes == 1) || (mes == 3) || (mes == 5) || (mes == 7) || (mes == 8) || (mes == 10) || (mes == 12))
dias_mes = 31;
if ((mes == 4) || (mes == 6) || (mes == 9) || (mes == 11))
dias_mes = 30;
if ((mes == 2) && (ano % 4 == 0))
dias_mes = 29;
}
else
retorno = false;
//Verifica dia.
if(ValidaNumero(data.substring(0, 2)) == true){
dia = Integer.parseInt(data.substring(0, 2));
if (dias_mes == 31)
if ((dia > 31) || (dia < 1))
retorno = false;
if (dias_mes == 30)
if ((dia > 30) || (dia < 1))
retorno = false;
if (dias_mes == 29)
if ((dia > 29) || (dia < 1))
retorno = false;
if (dias_mes == 28)
if ((dia > 28) || (dia < 1))
retorno = false;
}
else
retorno = false;
}
}
return retorno;
}
Você pode usar a classe SimpleDateFormat para fazer isso com menos linhas de código e independente de idioma.
public boolean isValidDate(String date, String format)
{
SimpleDateFormat sdf = new SimpleDateFormat(format);
try {
sdf.parse(date);
sdf.setLenient(false); //Impede que datas como 31/02/2007 virem 02/03/2007
return true;
}
catch (ParseException e) {
return false;
}
}
Talvez seja necessário verificar caso você aceite datas vazias, como descrito, aqui.
Agora você pode fazer:
if (!isValidDate(txtData.getText(), "dd/mm/yyyy"))
JOptionPane.showMessageDialog(this, "Data inválida!");
Outra opção é baixar e usar um componente que mostre um calendário, e que já valide a data sozinho, como o JCalendar.
Se for manipular datas, também não custa dar uma olhada na JODA.