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:

    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

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

Dessa forma um ParseException será lançada!

Até mais,
Roberto

Share


Um comentário

  1. #
    Tadashi
    agosto 19th, 2011 at 19:39

    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.

    Responda a esse comentário

Deixe um comentário