Olá,
Vamos a dúvida.
Tenho um campo formatado, com a mascara ##/##/####
E simplesmente quero ver se a data digitada é válida, só que usando a classe DATA2.
O que acontece.
Quando por exemplo digito 32/01/2012 o dia 32 se transforma em dia 1.
A pergunta é por que isto acontece?
Tela principal
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
DateFormat formatter = new SimpleDateFormat("dd/mm/yyyy");//formatar dia
//formatter.setLenient(false);
data = (Date) formatter.parse(JFDATA.getValue().toString());
//data mostra este formato data Wed Jun 06 00:00:00 BRT 2012
String formatodata = "dd/mm/yyyy";
String dataaux1=formatter.format(data);//transforma date em String
DATA2 m = new DATA2();
boolean teste = m.isThisDateValid(dataaux1, formatodata);
System.out.println("teste "+teste);
//Validar datas
//DATA validar = new DATA();
//validar.validata(dataaux1);
} catch (Exception e) {
/*Alguns erros de data cairam aqui
* Por exemplo se digitar
*/
JOptionPane.showMessageDialog(rootPane, "Data in.","Erro!!!", 0);
}
}
Classe
package Validar;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
*
* @author Administrador
*/
public class DATA2 {
public boolean isThisDateValid(String dateToValidate, String dateFromat){
if(dateToValidate == null){
return false;
}
SimpleDateFormat sdf = new SimpleDateFormat(dateFromat);
sdf.setLenient(false);
try {
//if not valid, it will throw ParseException
Date date = sdf.parse(dateToValidate);
System.out.println(date);
} catch (ParseException e) {
return false;
}
return true;
}
}