Oi galera do GUJ, esse é meu primeiro post nesse fórum, que para mim é um dos melhores sobre java na lingua portuguesa. Depois da babação toda vamos ao que interessa :
Eu estou transformando uma string contendo uma data no formato “dd/MM/yyyy” em uma data real (Date), porem nao achei nenhuma maneira de tratar os erros caso alguem passe para a string uma data inválida tipo 30/02/2005 por exemplo. Abaixo segue o codigo que estou usando:
SimpleDateFormat dateFormat = new SimpleDateFormat(“dd/MM/yyyy”);
Date date;
try{
date = dateFormat.parse( jFTFData.getText() );
}
catch( ParseException e ){
e.printStackTrace();
}
Gotaria que alguem me desse uma luz de como fazer isso, qualquer ajuda será bem vinda.
Bem, acho que nao tem nada do tipo "Erro na data - dia invalido!, ou algo parecido. Se quiser saber o que tá errado, vai ter que validar na mao Mas se procurar aqui no forum, tem alungs codigos pra isso já.
Lembrando que se a data estiver errada, é lançado uma excessão, hein!
Por incrivel que pareça nao gerou nenhuma exceção, e é por que testei datas absurdas como 99/99/9999, entao eu resolvi imprimir o que estava sendo gerado e percebi que na realidade o compilador parece criar (ou faz um cast ) uma data valida, porem nenhuma mensagem de exceção foi gerada.
[quote=danieldestro]Hummm… é verdade…
Se você colocar 32/12/2004, ele traduz para 01/01/2005.
Pode fazer o teste aí.[/quote]
q coisa bizarra!? :shock: :shock:
nunca parei pra perceber isso… Mas te juro que isso nao acontecia ( eu acho )… Eu to usando o java 5. alguem usa um mais antigo ai e ta dando o mesmo problema???
Como java.text.SimpleDateFormat é um java.text.DateFormat, então dá para usar setLenient com SimpleDateFormat.
[code]setLenient
public void setLenient(boolean lenient)
Specify whether or not date/time parsing is to be lenient.
With lenient parsing, the parser may use heuristics to interpret inputs
that do not precisely match this object's format.
With strict parsing, inputs must match this object's format.
Parameters:
lenient - when true, parsing is lenient
See Also:
Calendar.setLenient(boolean)