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 !
hich
Dezembro 23, 2010, 12:46pm
#5
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.