Ola galera gostaria sa saber se alguem tem um algoritimo que valida data: o meu algoritimo ja valida no seguite formato dd/mm/aaaa
o unico problema é que se eu colocar 40/90/5000 ele aceita ou seja soh valida o formato mesmo , algm tem um algoritimo que faça
a validação da data mesmo ?
Do jeito que você está fazendo, está comparando posições na String para definir se representa um formato de data, logo tem a regra de dia/mes valido.
Você tem duas opcoes, ou tratar isto (Péssima ideia).
Ou utilizar classes do java que ja fazem isto para você
No caso o campo getTxVencimento(), tem a representação de uma data, logo é so criar um metodo que pega o conteúdo deste campo e valide.
Segue abaixo um exemplo
public static boolean isDataValida(String date) {
try {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
sdf.setLenient(false);
sdf.parse(date);
} catch (ParseException e) {
return false;
}
return true;
}
Depois é so utilizar no seu código, onde você não vai ficar precisando validar mais a posição, pois o método acima valida se a data é valida, em sua formatação e nas regras de dias/meses.
Utilizar a API do java é melhor, pois o método já foi testado por muitas pessoas, sempre vai ter melhorias de performance, entre outras razões de se utilizar a API.
O código postado por você apesar de funcional, é necessário no minimo um case test para verificar se isto funciona da maneira correta. Isto atrasa o desenvolvimento, e pode trazer alguns bugs complicados de resolver na aplicação.
[code]import java.text.SimpleDateFormat;
import java.util.Calendar;
public class CompareDate {
public static void main(String args[]) {
Calendar cal = Calendar.getInstance();
Calendar currentcal = Calendar.getInstance();
cal.set(1991, Calendar.APRIL, 20);
currentcal.set(currentcal.get(Calendar.YEAR),currentcal.get(Calendar.MONTH), currentcal.get(Calendar.DAY_OF_MONTH));
if (cal.before(currentcal)) {
System.out.print("A data atual (" + new SimpleDateFormat("dd/MM/yyyy").format(currentcal.getTime()) + ") é maior que a data " + new SimpleDateFormat("dd/MM/yyyy").format(cal.getTime()));
} else if (cal.after(currentcal)) {
System.out.print("A data atual(" + new SimpleDateFormat("dd/MM/yyyy").format(currentcal.getTime()) + ") é menor que a data " + new SimpleDateFormat("dd/MM/yyyy").format(cal.getTime()));
} else {
System.out.print("As duas datas são iguais.");
}
}