Pular para o conteúdo

Cuidado com parse de String para Date

Olá

Esse post é só uma dica para você que usa o SimpleDateFormat para converter String em Date.
Não sei por que razão (para falar a verdade também não pesquisei) mas o SimpleDateFormat não lança uma exceção quando passamos um data que não existe no calendário. Por exemplo 31 de setembro e 32 de setembro. Ele simplesmente converte para um dia do próximo mês.

Veja os exemplos abaixos:

[sourcecode lang=”java”]
SimpleDateFormat sdf = new SimpleDateFormat(“dd/MM/yyyy”);
System.out.println(sdf.parse(“30/09/2011”));
System.out.println(sdf.parse(“31/09/2011”));
System.out.println(sdf.parse(“32/09/2011”));

// Saídas
// Fri Sep 30 00:00:00 BRT 2011
// Sat Oct 01 00:00:00 BRT 2011
// Sun Oct 02 00:00:00 BRT 2011

[/sourcecode]

Dica do Tadashi:
Para validar a data use o método setLenient(false)

Dessa forma um ParseException será lançada!

Até mais,
Roberto

1 comentário em “Cuidado com parse de String para Date”

  1. Olá Furutani,

    Caso você quiser que o parse lance uma exception use o método ‘setLenient(true)’, dessa forma, o parse validará as datas inválidas e não vai deslocar os dias/meses/anos que forem informados a mais.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *