Então, preciso pegar uma string no qual o usuário digitou em um jTextField e comparar se esta string segue o formato “dd/MM/yyyy”, se sim, eu retorno false, se não, retorno true, ou seja, preciso comparar se a string que o usuário entrou, segue o formato de data desejado. Porém estou com dúvidas em como fazer esta comparação.
Podem me dar sugestões?!
privatebooleanverificarDataPreenchida(){booleanretorno=false;Stringdata=jTextFieldData.getText();Stringt=(newSimpleDateFormat("dd/MM/yyyy").format(data));//ERRADO//isEmpty(): Função que verifica se uma variável está vazia (incluindo espaços em branco).//retorna: VERDADEIRO se está vazio; FALSO caso contrário. if(data.isEmpty()==true){if(data.compareTo(t)==0){//ex: Se usuário digitou: 08/10/2012, então esta correto, caso contrário, erradoretorno=false;}elseretorno=true;}else{retorno=true;}returnretorno;}
packagepaz;publicclassInicio{Stringa="07/04/1995";Stringteste="LOL";Stringteste2="Oi/Tio/Vish";intanoMinimo=1900;intanoMaximo=2050;publicInicio(){try{if(comparaTio(a)==true){System.out.println("É, parece que essa data é válida e.e");}else{System.out.println("A data tá fora dos limites, amigo");}}catch(Exceptione){System.out.println("A data sequer segue o formato correto D:");e.printStackTrace();}}publicbooleancomparaTio(Stringv)throwsException{Stringf[]=v.split("/");booleanretorno=false;if(Integer.parseInt(f[0])<=31&&Integer.parseInt(f[0])>=1&&Integer.parseInt(f[1])<=12&&Integer.parseInt(f[1])>=1&&Integer.parseInt(f[2])>=anoMinimo&&Integer.parseInt(f[2])<=anoMaximo){retorno=true;}returnretorno;}publicstaticvoidmain(Stringe[]){newInicio();}}
Eu sei que código dos outros é auto-criptografado, mas qualquer dúvida só dizer :)
jks1903
vanessa.tenorio:
Bom dia, pessoal!!!
Então, preciso pegar uma string no qual o usuário digitou em um jTextField e comparar se esta string segue o formato “dd/MM/yyyy”, se sim, eu retorno false, se não, retorno true, ou seja, preciso comparar se a string que o usuário entrou, segue o formato de data desejado. Porém estou com dúvidas em como fazer esta comparação.
Podem me dar sugestões?!
privatebooleanverificarDataPreenchida(){booleanretorno=false;Stringdata=jTextFieldData.getText();Stringt=(newSimpleDateFormat("dd/MM/yyyy").format(data));//ERRADO//isEmpty(): Função que verifica se uma variável está vazia (incluindo espaços em branco).//retorna: VERDADEIRO se está vazio; FALSO caso contrário. if(data.isEmpty()==true){if(data.compareTo(t)==0){//ex: Se usuário digitou: 08/10/2012, então esta correto, caso contrário, erradoretorno=false;}elseretorno=true;}else{retorno=true;}returnretorno;}
Grata!!!
Uma idéia mais simples de repente poderia ser através de um bloco try catch.
Por exemplo:
//...codigo anteriorStringdata=jTextFieldData.getText();try{Stringt=(newSimpleDateFormat("dd/MM/yyyy").format(data));//código a ser executado se o formato for válido.}catch(IllegalFormatExceptionife){//código a ser executado se o formato for inválido.}
vanessa.tenorio
Pessoal!!! Muito obrigada pela ajuda!!!
O código do War Paz atendeu perfeitamente as minhas necessidades. O código do jks1903 , está perfeito, porém está muito avançado para neu nível de conhecimento :oops: .
Muito obrigada!!!
Fellipex
na verdade o código do jks é bem mais simples
jks1903
vanessa.tenorio:
Pessoal!!! Muito obrigada pela ajuda!!!
O código do War Paz atendeu perfeitamente as minhas necessidades. O código do jks1903 , está perfeito, porém está muito avançado para neu nível de conhecimento :oops: .
Muito obrigada!!!
Blza, qualquer coisa tamo ai.
Mas referente ao código do amigo ali em cima, apenas atente que ele valida datas como : 31/09/2012, 30/02/2012, 00/01/2012, dentre outros.
vanessa.tenorio
jks1903 , muito obrigada pelo toque e excelente observação.
Analisei seu questionamento e verifiquei que este problema não ocorrerá no meu caso, pois estou comparando dados, no caso datas, que estão sendo selecionadas do banco de dados, e quando eu insiro tais datas no banco, estas são as atuais (Veja a estrutura que utilizei para selecionar as datas atuais - fiz termo a termo, pois tenho que realizar outras análises), então não terei problema com datas inválidas. No caso do usuário inserir uma data invalida ou incorreta, esta não será compatível com a do banco de dados na comparação que fiz com a ajuda de vocês, assim apresentará uma mensagem de erro.
GregorianCalendar cal = new GregorianCalendar(); // manipulação de datas
semana = cal.get(Calendar.WEEK_OF_YEAR);
ano = cal.get(Calendar.YEAR);
mes = cal.get(Calendar.MONTH);
Forte abraço e novamente muito obrigada!!!
War_Paz
jks1903:
vanessa.tenorio:
Pessoal!!! Muito obrigada pela ajuda!!!
O código do War Paz atendeu perfeitamente as minhas necessidades. O código do jks1903 , está perfeito, porém está muito avançado para neu nível de conhecimento :oops: .
Muito obrigada!!!
Blza, qualquer coisa tamo ai.
Mas referente ao código do amigo ali em cima, apenas atente que ele valida datas como : 31/09/2012, 30/02/2012, 00/01/2012, dentre outros.
Na verdade, valida datas desde a do ano definida por anoMinimo (int) e anoMaximo (int)
Ah, não validaria a data 00/01/2012, por que 00 não é um dia válido. Pra falar a verdade, alguns dias são inválidos em certo meses, mas aí geraria um código bem maior fazer os limites de cada mês…
doravan
Vá de regular expression, a forma mais prática de validar uma data.
Ele valida meses, dias de cada mês, anos, anos bissextos…
Datas como 29/02/2013 são inválidas.
Este regex aceita qualquer data válida.
Caso você deseje limitar as datas válidas, após passar neste regex você pode converter a string em data e validar os limites com datas fortemente tipadas.