Scorsatto 22 de dez. de 2010
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?
Alessandro09 22 de dez. de 2010
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 );
}
juliocesarsrosa 23 de dez. de 2010
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 !
marcobiscaro2112 23 de dez. de 2010
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
andre_teprom 1 de jan. de 2011
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.
+++
marcobiscaro2112 1 de jan. de 2011
andre_teprom:
if ( validaData( "YYYY-MM-DD" , "2010-11-31" ) )
Poderiam me ajudar a resover ?
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:
andre_teprom 1 de jan. de 2011
Maravilha !
Agora funfou…
Obrigado.