Validando datas...?

Blz galera do GUJ… to com um probleminha…

eu peguei um [color=“red”]JFormattedTextField[/color] e utilisei a seguinte mascara para datas… color=“red”[/color]… mas agora eu posso digitar kualker coisa… tipo… b[/b]… como q eu faço pra [color=“blue”]validar uma data[/color]…??? saber se ela é verdadeira… :smiley: :roll:

cara, a unica forma de vc conseguir validar uma data eh criando metodos que façam essa validação…conhece o metodo subString()?? Vc deverá pegar as subStrings de uma String e testa-las para validar. E tb terá que validar ano Bissexto, essas coisas, mas tudo na base do metodo ok?

ate mais

Bom, não exatamente.

De uma olhada em:

DateFormat.setLenient();

Se vc colocar false, esse tipo de data vai causar exception.

Vai ajudar.

[]'s

cara, o java mesmo verifica pra vc se a data é verdadeira ou falsa !!
seria + ou - isso!!!

try{

Locale loc = new Locale (“pt”, “BR”);
DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM, loc);
// aqui vc estaria fazendo um parse de String para data
String dataInicial = df.format(getDataInicio());
String dataFinal = df.format(getDataFim());
}
catch(ParseException pex){
// se for falsa é lançada a exceção ok?
}

[]s
léo

Novamente… não exatamente :slight_smile:

Vc TEM que setar esse lenient.

[]'s

Vou testar os dois métodos aí que vcs me passaram…
se eu naum conseguir ou tiver alguma duvida eu volto a postar aki blz??? 8)

…Vcs sabem carnaval… viajens… hehehe… :roll: naum sei se vou tentar antes do carnaval…

Quando falamos em validação de uma data, temos em maos um leque de opções…me perdoe, havia esquecido o DateFormat, até porque em minha empresa fizmuitos metodos para tratar data. Se vc quiser usar o DateFormat com certeza lá deve ter métodos de tratamento de Data, mas sempre preferi tratar com métodos…mas se caso vc acha mais facil e tem pressa, procure na API e faça pelos métodos já prontos das classes do java.

se tiver duvidas, especifique que tentaremos ajudar.

ate mais

leo.dep

String dataInicial = df.format(getDataInicio()); 
String dataFinal = df.format(getDataFim()); 

eu naum entendi esse métodos que vc me passou…
getDataInicio() , getDataFim() :lol:

own essa e a declaracao do meu metodo é:

public Timestamp getDataInicio() {
return dataInicio;
}
public Timestamp getDataFim() {
return dataFim;
}
se vc precisar depois serei mais explicito

Na verdade, vc deve mexer no seu MaskFormatter.

Vc precisa de uma subclasse dele em que vc sobrescreva os métodos stringtoValue(String) e valueToString.

Aí sim, vc usa um SimpleDateFormat para fazer as conversões:

  public Object stringToValue(String text) throws java.text.ParseException {
    return format.parseObject(text);
  }

Sendo que format é uma variável de instância.

Realmente, é uma pena eles não terem feito um jeito de mesclar Formatters, já que vc tem MaskFormatter e DateFormatter.

boa sorte!!
[]s

Galera valeu pela ajuda…
mais eu acabei encontrando outra saída… ficou até mais facil… e simples…
eu delimitei o que o usuario pode usar como data… coloquei 3 JComboBox…
um pra dia, outro pra mes e outro pra ano… fiz os tratamentos para ano bissesto(bixesto… sei lá…) para o ano em que fevereiro tem 29 dias… heheheheh… o formulário ficou até mais bunitim… hehehehe :smiley: :smiley: