Validar data

4 respostas
A

Bom colegas, tenho um pequeno problema, estou tentando validar uma data, ou seja o usuario prenche por fora a data e eu tenho que ver se a a mesma esta certa, com um bloco de if eu de conta de fazer, agora existem formas mais desentes de fazer o que eu quero…
entao tentei com este codigo e acho que estou perto… mas o que acontece que escrevo data errada e ele não a reconhece, acho que ta faltando alguma coisa para validar… mais não sei qual seria o cara.
Aqui vai o codigo.

try { String anoData = recData.substring(6,10);int ano = Integer.parseInt(anoData); String mesData = recData.substring(3,5);int mes = Integer.parseInt(mesData); String diaData = recData.substring(0,2);int dia = Integer.parseInt(diaData); GregorianCalendar gc = new GregorianCalendar(); gc.setLenient(false); gc.set(GregorianCalendar.YEAR, ano); gc.set(GregorianCalendar.MONTH, mes); gc.set(GregorianCalendar.DATE, dia); gc.getTime(); respValData = true; } catch (Exception e) { respValData = false; e.printStackTrace(); }
Bom e esso ae galera…

Outra coisa estou interessado em tirar certificação java, como é o processo para marcar a prova, onde é feita a mesma…? Eu moro en Brasilia.

4 Respostas

R

Se tu tiver usando interface gráfica, uma boa maneira de validar é usando o objeto MaskFormatter e usar os métodos de validação dele. Vai facilitar muito teu trabalho pq num vai ser preciso ficar validando tamanho de string, caso a pessoa não tenha digitado a data como esperado.

Espero que ajude

R

Só pra reforçar… tu usa esse objeto com o JFormattedTextField

MaskFormatter mask = new MaskFormatter(##/##/####);
JFormattedTextField ftf = new JFormattedTextField(mask);

Dá uma olhada na API pra melhorar isso que eu coloquei.

D

duas dicas:

:idea: se estiver exibindo uma interface swing para o usuário, voce pode utilizar o componente JCalendar que da pra baixar da internet (procure pelo google). A vatagem eh q através do componente JDateChooser nao tem como o usuario selecionar uma data invalida.

:idea: este eh um metodo utilitario para validação

private static int getNdias(int mes,int ano){ java.util.GregorianCalendar gc = new java.util.GregorianCalendar(ano,mes,1); return gc.getActualMaximum(java.util.GregorianCalendar.DAY_OF_MONTH); }

para este método eh passado o número do mes e do ano e ele retorna o número máximo de dias do mes. A vantagem eh q com isso ja sao tomadas algumas precauções como ano bissexto…

M

boa denis, muito bom esse pacote :slight_smile:

Criado 23 de abril de 2005
Ultima resposta 23 de abr. de 2005
Respostas 4
Participantes 4