Datas inexistentes

4 respostas
eln_santos

Olá pessoal.

Estou procurando faz um tempão alguma solução para o meu problema, e não encontro :cry: sniff!

No sistema, o usuário colocará em um cadastro a data de nascimento.

Porém datas como, 00/00/0000 ou 33/87/9099 são aceitas normalmente.

Fiz uma classe denominada calendario, e incluí o seguinte código(que eu encontrei por aí.. )

public boolean isValidDate(int nDay, int nMonth, int nYear)
    {
        if (nDay == 0)   
        {
        if (nDay < 1 || nDay > 31)
            return false;
        }
        if (nMonth == 0)
        {
        if (nMonth < 1 || nMonth > 12)
            return false;
        }
        return nYear >= 0 && nYear <= 9999;
    }

    public boolean isValidMonthYear(int nMonth, int nYear)
    {
        if (nMonth <1 || nMonth > 12)
            return false;
        return nYear >0 && nYear <=9999;
    }

Está correto isso???

Sei lá... eu acabei dividindo o código... também não sei se pode..
mas estou tentando de tudo aqui! rsrs :roll:

ficou assim:

public boolean diaValido(int dia){

            if (dia < 1 || dia > 31){
                return false;
        }else{
            return true;
        }
    }

public boolean mesValido(int mes){


            if (mes < 1 || mes > 12){
                return false;
        }else{
            return true;
        }
    }

public boolean anoValido(int ano){


            if (ano < 1900 || ano > 2100){
                return false;
        }else{
            return true;
        }
    }

Eu uso net beans.... e por isso na classe do frame coloquei assim:

public boolean diaValido(){
        if(txtDataNasc.getText().isEmpty()){
            return true;
        }else{
            return cal.diaValido(01);
        }
    }

(tanto do dia, como mês e o ano)

:shock:

Genteeee desculpem por ter passado muita coisa :oops:.. mas acho que é mais fácil pra vcs entenderem meu caso!

Espero que possam me ajudar...

Muito obrigadaaa!!!

HELPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP :idea:

4 Respostas

DavidUser

faz assim:

String date="23/08/1984";
String verificador=date.split("/");

//verifica o dia
if (Integer.parseInt(verificador[0])<1 || Integer.parseInt(verificador[0])>31){System.out.println("valor inválido");}

//verifica o mês
if (Integer.parseInt(verificador[1])<1 || Integer.parseInt(verificador[0])>12){System.out.println("valor inválido");}

//verifica ano
if (Integer.parseInt(verificador[2])<1700 || Integer.parseInt(verificador[2])>2009){System.out.println("valor inválido");}
Guilherme_Gomes
public static void main(String[] args) {
		String [] x = {"00/00/0000","27/03/1985","33/87/9099"};
		SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
		sdf.setLenient(false);
		for(String s:x){
			System.out.print(s + "... ");
			try{
				Date parse = sdf.parse(s);
				System.out.println(parse); // Data aceita
			}catch (Exception e) {
				System.out.println("erro"); // Data errada
			}
		}
	}

Saida:

eln_santos

Olá…
é tentei o primeiro… não deu muito certo não! rsrs
ficou um montão de erros…

já o segundo que me passaram… não apareceu nenhum vermelhinho no código rsrs… fiquei mais feliz…

mas uma perguntinha…

esse código (exemplo 2)
é pra colocar na classe do frame ?

Guilherme_Gomes

Só mostrei um exemplo de como verificar se a data é valida ou não, você adapta como quiser no seu código!
Crie um método de verificação que retorna um boolean (true|false)… Você quem sabe.

Criado 16 de abril de 2009
Ultima resposta 16 de abr. de 2009
Respostas 4
Participantes 3