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.
Att
L
lokits5
cara segue esse comando muito facil de usar só colca no seu codigo ja era
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.
Então fica como dica, sempre prefira a API.
Att
J
juliocesarsrosa
Galera legal a dica estou usando a classe simple data format porem estou com uma duvida
como faço a seguinte comparação ?
a data que sera digitada no campo nao pode ser maior que 20/04/2020 e nao pode ser menor que 20/04/1991
galera esse é soh um exemplo que nao funciona mas gostaria que me mostrassem uma sintaxe que funcionasse, obrigado.
J
javer
Segue um exemplo:
importjava.text.SimpleDateFormat;importjava.util.Calendar;publicclassCompareDate{publicstaticvoidmain(Stringargs[]){Calendarcal=Calendar.getInstance();Calendarcurrentcal=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 ("+newSimpleDateFormat("dd/MM/yyyy").format(currentcal.getTime())+") é maior que a data "+newSimpleDateFormat("dd/MM/yyyy").format(cal.getTime()));}elseif(cal.after(currentcal)){System.out.print("A data atual("+newSimpleDateFormat("dd/MM/yyyy").format(currentcal.getTime())+") é menor que a data "+newSimpleDateFormat("dd/MM/yyyy").format(cal.getTime()));}else{System.out.print("As duas datas são iguais.");}}}