Validação de Data [[RESOLVIDO]]

Galera eu preciso fazer uma validação bem simples porem estou com dificuldades pois sou iniciante …

eu tenho essse SimpleDataFormat

 private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy");

ele transforma minha variavel Data Emissão que ja é to tipo data para string…

agora eu apenas preciso fazer algo asim …

Se (DataEmissão for != de simpleDataFormat){
    reclame
}  

o que eu tenho ateh agora é isso

[code]

if (StringUtil.isEmpty(dadosTitulos.getTxDataEmissao().getText())) {
if((simpleDateFormat)!= (dadosTitulos.getTxDataEmissao().getText())) {
dadosTitulos.getTxDataEmissao().setBorder(errorBorder);
hasError = true;

            } else {
            dadosTitulos.getTxDataEmissao().setBorder(cleanBorder);
            
            }
        }

[/code] porem da erro no segundo If creio que a sintaxe esta errada …

obrigado !!

Não entendi muito bem o que você quer, mas se for para comparar duas datas e ver se elas são diferentes eu faço assim:

Date data = new Date();
String dataString = new SimpleDateFormat("dd/MM/yyyy").format(data);

minhaData = new SimpleDateFormat("dd/MM/yyyy").parse(TEXTFIELD DATA);

if (!dataString.equals(minhaData)) {
	System.out.println("Os dias são diferentes");
}

@ EDIT

Olhando o seu codigo o teu “simpleDateFormat” recebe algum valor para a comparação?

Boa noite, se entendi o que vc quer é verificar se a data está no formato dd/mm/yyyy, se for isso, pode usar uma estrutura de if…

                         try {
				if (aux.indexOf("/") != 2)
					throw new Exception();
				if (aux.lastIndexOf("/") != 5)
					throw new Exception();
				if(aux.length() != 10)throw new Exception();
			} catch (Exception ex) {
				showMessageDialog(null,
						"Informe a data no seguinte formato: dd/mm/yyyy",
						"Erro", ERROR_MESSAGE);
			}

E aew galera consegui , muito obrigado pela ajuda de vcs !!! vlw mesmo…

Segue então o fonte final para validação de data no formato dd/mm/yyyy

   if (!StringUtil.isEmpty(dadosTitulos.getTxDataEmissao().getText())) {

                if (dadosTitulos.getTxDataEmissao().getText().indexOf("/") != 2) {
                    dadosTitulos.getTxDataEmissao().setBorder(errorBorder);
                    MessageUtil.errorMessage("REQUIRED_FIELDS");
                    SwingUtilities.invokeLater(new Runnable() {

                        @Override
                        public void run() {
                            dadosTitulos.getTxDataEmissao().requestFocus();
                        }
                    });
                    return true;
                }
                if (dadosTitulos.getTxDataEmissao().getText().lastIndexOf("/") != 5) {
                    dadosTitulos.getTxDataEmissao().setBorder(errorBorder);
                    MessageUtil.errorMessage("REQUIRED_FIELDS");
                    SwingUtilities.invokeLater(new Runnable() {

                        @Override
                        public void run() {
                            dadosTitulos.getTxDataEmissao().requestFocus();
                        }
                    });
                    return true;
                }
                if (dadosTitulos.getTxDataEmissao().getText().length() != 10) {
                    dadosTitulos.getTxDataEmissao().setBorder(errorBorder);
                    MessageUtil.errorMessage("REQUIRED_FIELDS");
                    SwingUtilities.invokeLater(new Runnable() {

                        @Override
                        public void run() {
                            dadosTitulos.getTxDataEmissao().requestFocus();
                        }
                    });
                    return true;
                }

              } else {
                dadosTitulos.getTxDataEmissao().setBorder(cleanBorder);
            }

Obrigado !

Se vc digitar 99/99/9999 vai passar dessa forma ai.
Abraço

Com seu método de validação, se o usuário entrar com “gr/53/fd45” ele vai considerar como data válida.

Crie um método assim:

public static boolean validaData(String formato, String data) {
	SimpleDateFormat format = new SimpleDateFormat(formato);
	format.setLenient(false);
	try {
		format.parse(data);
		return true;
	} catch (ParseException e) {
		return false;
	}
}

Fazendo alguns testes, chegamos a isso:

Data: asdfasd
	válida? false
Data: 23/12/2010
	válida? true
Data: 29/02/2000
	válida? true
Data: 29/02/2009
	válida? false
Data: 15/11/1972
	válida? true
Data: 99/99/9999
	válida? false
Data: ab/cd/efgh
	válida? false
Data: 31/11/2000
	válida? false
Data: 30/10/2000
	válida? true
Data: 01/01/1850
	válida? true
Data: 14/03/1945
	válida? true
Data: 20/02/2002
	válida? true

Olá pessoal,

Tentei usar como argumentos dessa rotina os seguintes valores, mas não funcionou.
Informa que Y é um valor inválido.

if ( validaData( "YYYY-MM-DD" , "2010-11-31" ) )

Poderiam me ajudar a resover ?

Obrigado.

+++

[quote=andre_teprom]if ( validaData( "YYYY-MM-DD" , "2010-11-31" ) )

Poderiam me ajudar a resover ?[/quote]
Veja: http://download.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

A sigla para ano é ‘y’ (minúsculo). Acredito que você queira usar o pattern:

"yyyy-MM-dd"

Maravilha !
Agora funfou…

Obrigado.