Re: Dúvida DateFormat

3 respostas
N

Olá pessoal,

Estou tendo um problema com o método parse de DateFormat. Estou usando o seguinte código:

DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
        Date d = df.parse("35/12/87");
        System.out.println(d);

A data sendo passada para o método parse é inválida, porém a seguinte saída é exibida:

Mon Jan 04 00:00:00 BRST 1988

O método parse não deveria verificar se a data é inválida? Ou ele só analisa se a data está no estilo informado(no caso do código acima no estilo SHORT)? Se for o caso, qual método posso utilizar para verificar se uma String é uma data inválida?

Aguardo respostas.

3 Respostas

V

o método parse só verifica se a string está no formato correto de data, ele não verifica o range dos valores

não sei se DateFormat tem como avaliar se uma string é uma data válida, o ideal seria vc fazer isso utilizando os métodos de Calendar e depois converter para String, não se esta é a sua necessidade

[editando]

desculpe, tinha esquecido de falar sobre o método setLenient como disse o entanglement abaixo

E

http://java.sun.com/javase/6/docs/api/java/text/DateFormat.html#setLenient(boolean) - passe o valor “false”. Exemplo:

DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);  
df.setLenient (false);
try {
    Date d = df.parse("35/12/87");  
    System.out.println(d);  
} catch (ParseException ex) {
    .......
}
N

Obrigado pela ajuda pessoal, agora sim deu certo!!!

Criado 11 de janeiro de 2010
Ultima resposta 11 de jan. de 2010
Respostas 3
Participantes 3