Verificando data independente de separador

6 respostas
otaviofcs

Pessoal,

Uma dúvida. Eu recebo um campo com uma data e quero verificar que a mesma está preenchida corretamente. Atualmente uso um SimpleDateFormat com uma máscara “dd/MM/yyyy”. O problema é que eu quero aceitar também o formato “dd-MM-yyyy” sem fazer duas passagens.

Ou seja, eu queria uma passagem mais limpa que, por exemplo:

private boolean validaData(String data)
{
boolean ok = false;
SimpleDateFormat formatoData;
try{
formatoData = new SimpleDateFormat("dd/MM/yyyy");
formatoData.parse(data);
ok = true;
}catch(java.text.ParseException jtP){}
try{
formatoData = new SimpleDateFormat("dd-MM-yyyy");
formatoData.parse(data);
ok = true;
}catch(java.text.ParseException jtP){}
return ok
}

Escrevi esse código na mão só para ilustrar.

6 Respostas

_fs

Pesquisei um pouco aqui e fiz alguns testes, mas não consegui o efeito que deseja.

Uma solução alternativa a fazer duas passagens é fazer um replaceAll( “-”, “/” ) na variável “data” antes de fazer o parse.

luistiagos

LIPE:
Uma solução alternativa a fazer duas passagens é fazer um replaceAll( “-”, “/” ) na variável “data” antes de fazer o parse.

que gambiarra heim… mas realmente não vejo outra solução para isto a não ser esta gambi…

otaviofcs

replaceall pode ser uma solução. Talvez o melhor seja em separar isso em um método pré avaliação do dado, para quando passar no SimpleDateFormat ser tudo ou nada de uma só vez.

Na verdade estou estudando para ver se tem como ignorar qual o caracter (vou tentar um ?).

obrigado…

RaulCarlin

Eu tentei aqui o #, o ? e nada…

Verifique a String inteira e pegue somente os digitos (Character.isDigit()) e crie uma nova String somente com os números e somente um pattern do tipo ddMMyyyy, acho que é melhor do que replace né…

otaviofcs

ao invés do replaceAll (que compara strings) optei pelo replace(char,char). com isso a performance não vai ser muito detonada e como as strings tem usualmente um tamanho máximo de 10 caracteres, não creio seja grave.

Tentei todos os tipos de wildcards no SimpleDateFormat e li o javadoc para ver se ajudava e nada. Considero-me vencido… :frowning:

RaulCarlin

Não se considere vencido, considere a API de datas do Java uma porcaria…

Criado 30 de julho de 2007
Ultima resposta 31 de jul. de 2007
Respostas 6
Participantes 4