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;
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!
flw!
danieldestro
Uma data inválida gera um exceção.
Creio que seja do tipo ParseException. É só tratar a mensagem e boa.
brlima
danieldestro:
Uma data inválida gera um exceção.
Creio que seja do tipo ParseException. É só tratar a mensagem e boa.
acho que ele quer algo pra validar se a data tá certinho…
tem esse topico aqui, com um exemplo de um textfield que valida. ve se te ajuda.
Flw!
FabioMelo
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.
danieldestro
Hummm… é verdade…
Se você colocar 32/12/2004, ele traduz para 01/01/2005.
Pode fazer o teste aí.
FabioMelo
brlima, acho que é isso mesmo que voce indicou, vou ver se consigo entender e compilar esse código.
Valeu pela dica
FabioMelo
Acontece exatamente isso Daniel.
brlima
danieldestro:
Hummm… é verdade…
Se você colocar 32/12/2004, ele traduz para 01/01/2005.
Pode fazer o teste aí.
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???
T
thingol
Cheque o método setLenient, você deve chamar com o parâmetro (false).
FabioMelo
Esse método é de que classe?
T
thingol
java.text.DateFormat
Como java.text.SimpleDateFormat é um java.text.DateFormat, então dá para usar setLenient com SimpleDateFormat.