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
}
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 ?).
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é…
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…