domingo, 2 de maio de 2010

Java - Convertendo um String pra Date

Método Java para converter um String para Date.

A vantagem deste método é que se o padrão for dd/MM/yyyy e se o usuário digitar 17/10/10, o método converte o "10" para "2010" automaticamente.


   public Date stringToDate(String string, String pattern)
            throws Throwable {
      Date data = null;
      if (JavaUtils.isStringNaoVazia(string)) {
         // Caso o padrão seja dia/mês/ano e o usuário tenha digitado o ano
         // com dois dígitos. (Ex.: 07)
         // o ano deve ser 2007
         if (JavaUtils.isObjectsIguais("dd/MM/yyyy", pattern) && string.length() == 8) {
            StringBuffer stringBuffer = new StringBuffer();
            stringBuffer.append(string.substring(0, 6));
            stringBuffer.append("20");
            stringBuffer.append(string.substring(6));
            string = stringBuffer.toString();
         }
         // Caso o padrão seja mês/ano e o usuário tenha digitado o ano com dois
         // dígitos. (Ex.: 07)
         // o ano deve ser 2007
         if (JavaUtils.isObjectsIguais("MM/yyyy", pattern) && string.length() == 5) {
            StringBuffer stringBuffer = new StringBuffer();
            stringBuffer.append(string.substring(0, 3));
            stringBuffer.append("20");
            stringBuffer.append(string.substring(3));
            string = stringBuffer.toString();
         }
         // Caso o padrão seja dia/mês/ano HH:mm e o usuário tenha digitado o ano
         // com dois dígitos. (Ex.: 07)
         // o ano deve ser 2007
         if (JavaUtils.isObjectsIguais("dd/MM/yyyy HH:mm", pattern) && string.length() == 14) {
            StringBuffer stringBuffer = new StringBuffer();
            stringBuffer.append(string.substring(0, 6));
            stringBuffer.append("20");
            stringBuffer.append(string.substring(6));
            string = stringBuffer.toString();
         }
         // Caso o padrão seja mês/ano HH:mm e o usuário tenha digitado o ano
         // com dois dígitos. (Ex.: 07)
         // o ano deve ser 2007
         if (JavaUtils.isObjectsIguais("MM/yyyy HH:mm", pattern) && string.length() == 11) {
            StringBuffer stringBuffer = new StringBuffer();
            stringBuffer.append(string.substring(0, 3));
            stringBuffer.append("20");
            stringBuffer.append(string.substring(3));
            string = stringBuffer.toString();
         }
         SimpleDateFormat sdf = new SimpleDateFormat(pattern);
         sdf.setLenient(false);
         data = sdf.parse(string);
      }
      return data;
   }

Nenhum comentário: