Caro Roberto,
 
um dos erros que vi no seu código (mas que não sei se é a causa do problema) é que se os meses variam de 0 a 11, você deveria ter escrito:
 
calendario.set(ano,(mes+1),dia, 0, 0, 0); // os meses começam por 0
 
...de qualquer forma, tomei a liberdade de passar para você uma função (já testada) que faz a mesma coisa.

public static java.util.Date formata(String data) throws Exception {
  try {
   java.util.Date result = null;
   if (data != null) {
    data = "data.trim();    if (!data.equals("")) {
     Locale locale = new Locale("pt", "BR");
     DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.DEFAULT, locale);
     result = dateFormat.parse(data);
    }
   }
   return result;
  }
  catch (ParseException e) {
   throw new Exception("Data incorreta. O formado correto é DD/MM/AAAA.");
  }
  catch (Exception e) {
   return null;
  }
 }
 
Rodrigo Fernandes
 
Improve It -
www.improveit.com.br
Applied Software Engineering
Rodrigo de Brito, 13 - Botafogo
Rio de Janeiro, RJ, 22280-100
(21) 2542-9968
(21) 9228-5434

----- Original Message -----
Sent: Thursday, August 15, 2002 7:32 PM
Subject: [java-list] Função c/ comportamento estranho (erro meu ...)

Tenho a seguinte função :

    public static java.util.Date stringToUtilDate (String inData)  {
      java.util.Date auxData;
    int dia=0, mes=0, ano=0;
      Calendar calendario;
      calendario = calendario.getInstance();

      StringTokenizer tokens = new StringTokenizer(inData, "/");
      dia = Integer.parseInt(tokens.nextToken());
      mes = Integer.parseInt(tokens.nextToken());
      ano = Integer.parseInt(tokens.nextToken());

      calendario.set(ano,(mes-1),dia, 0, 0, 0); // os meses começam por 0
      calendario.set(Calendar.MILLISECOND, 0);
      auxData = calendario.getTime();

    return auxData;
    }

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-

Problema eh que quando faço

stringToUtilDate("31/04/2002") ela funciona !? Não dá erro e me retorna uma data compatível c/ "01/05/2002". Como posso corrigir isso ?

Obrigado,

jr

 


Yahoo! PageBuilder - O super editor para criação de sites: é grátis, fácil e rápido.

Responder a