none
Validar data em Java

    Question

  • To com um problema no meu validador de data ele ta validando tudo certinho, já reparei alguns problemas mas na hr de validar o ano


    function VerificaData(digData){    var bissexto = 0;    var data = digData.replace(" ","");    var tam = data.length;    if (tam == 10)    {        var dia = data.substr(0,2)        var mes = data.substr(3,2)        var ano = data.substr(6,4)        if ((ano > 1900)||(ano < 2100))        {            switch (mes)            {                case '01':                case '03':                case '05':                case '07':                case '08':                case '10':                case '12':                    if  (dia <= 31)                    {                        return true;                    }                    break                                case '04':                        case '06':                case '09':                case '11':                    if  (dia <= 30)                    {                        return true;                    }                    break                case '02':                    /* Validando ano Bissexto / fevereiro / dia */                    if ((ano % 4 == 0) || (ano % 100 == 0) || (ano % 400 == 0))                    {                        bissexto = 1;                    }                    if ((bissexto == 1) && (dia <= 29))                    {                        return true;                                    }                    if ((bissexto != 1) && (dia <= 28))                    {                        return true;                    }                                break                                    }        }    }        alert("A Data "+data+" é inválida!");    return false;}O problema está aqui: if ((ano > 1900)||(ano < 2100))pois o campo e o banco de dados estão reconhecendo como texto, talvez possa ser isso Tongue TiedObs.: já inverti o <, > mas nada.Obrigado xD
    Wednesday, July 16, 2008 3:07 PM

Answers

  • Flavio, dei uma ajeitada nesta sua funçao, faça um teste para ver se funciona.

     

    Code Snippet

    <script type="text/javascript">
    function VerificaData(digData)
    {
        var bissexto = 0;
        var data = digData.replace(" ","");
        var tam = data.length;
        if (tam == 10)
     {
      var dia = data.substr(0,2)
            var mes = data.substr(3,2)
            var ano = data.substr(6,4)
            if ( (parseInt(ano) > 1900) && (parseInt(ano) < 2100) )
      {
       if ( (parseInt(mes) > 0) && (parseInt(mes) < 12) )
       {
        switch (mes)
        {
        case '01':
        case '03':
        case '05':
        case '07':
        case '08':
        case '10':
        case '12':
         if  ( (dia > 0) && (dia <= 31) )
          return true;
         else
          return false;
         break;
        case '04':
        case '06':
        case '09':
        case '11':
         if  ( (dia > 0) && (dia <= 30) )
          return true;
         else
          return false;
         break;
        case '02':
        /* Validando ano Bissexto / fevereiro / dia */
         if ((ano % 4 == 0) || (ano % 100 == 0) || (ano % 400 == 0))
         {
          bissexto = 1;
                     }
         if ((bissexto == 1) && (dia <= 29) && (dia > 0) )
          return true;
         else
          return false;

         if ((bissexto != 1) && (dia <= 28) && (dia > 0) )
          return true;
         else
          return false;
         break;
        }
       }
       else
       {
        return false;
       }
      }
      else
      {
       return false;
      }
     }
     else
     {
      return false;
     }
    }
    </script>

     

     

     

    Abraços

     

    Estevam

    Wednesday, July 16, 2008 3:37 PM
  • Bom eu copiei essa função mas não pegou ;(
    Mas ai depois só peguei o que eu precisava que era o

    if ( (parseInt(ano) > 1900) && (parseInt(ano) < 2100) )

    e deu certo obrigado de novo =D
    Wednesday, July 16, 2008 4:39 PM

All replies

  • Flavio, dei uma ajeitada nesta sua funçao, faça um teste para ver se funciona.

     

    Code Snippet

    <script type="text/javascript">
    function VerificaData(digData)
    {
        var bissexto = 0;
        var data = digData.replace(" ","");
        var tam = data.length;
        if (tam == 10)
     {
      var dia = data.substr(0,2)
            var mes = data.substr(3,2)
            var ano = data.substr(6,4)
            if ( (parseInt(ano) > 1900) && (parseInt(ano) < 2100) )
      {
       if ( (parseInt(mes) > 0) && (parseInt(mes) < 12) )
       {
        switch (mes)
        {
        case '01':
        case '03':
        case '05':
        case '07':
        case '08':
        case '10':
        case '12':
         if  ( (dia > 0) && (dia <= 31) )
          return true;
         else
          return false;
         break;
        case '04':
        case '06':
        case '09':
        case '11':
         if  ( (dia > 0) && (dia <= 30) )
          return true;
         else
          return false;
         break;
        case '02':
        /* Validando ano Bissexto / fevereiro / dia */
         if ((ano % 4 == 0) || (ano % 100 == 0) || (ano % 400 == 0))
         {
          bissexto = 1;
                     }
         if ((bissexto == 1) && (dia <= 29) && (dia > 0) )
          return true;
         else
          return false;

         if ((bissexto != 1) && (dia <= 28) && (dia > 0) )
          return true;
         else
          return false;
         break;
        }
       }
       else
       {
        return false;
       }
      }
      else
      {
       return false;
      }
     }
     else
     {
      return false;
     }
    }
    </script>

     

     

     

    Abraços

     

    Estevam

    Wednesday, July 16, 2008 3:37 PM
  • Bom eu copiei essa função mas não pegou ;(
    Mas ai depois só peguei o que eu precisava que era o

    if ( (parseInt(ano) > 1900) && (parseInt(ano) < 2100) )

    e deu certo obrigado de novo =D
    Wednesday, July 16, 2008 4:39 PM
  • Ok Flavio, mas tome cuidado, pois se o usuário entrar com uma data que simplificada, por exemplo, 6/7/2008 seu script provavelmente poderá retornar erro, e do jeito que esta o script poderá retornar erro se ele também entrar com dia 0 ou número negativo e o mes a mesma coisa (0, ou números negativos, ou maior q 12), seria interessante voce tratar isso no seu script também.

     

    Abraços

     

    Estevam

    Wednesday, July 16, 2008 5:59 PM
  • function ValidarData(data)

    {

    var dateReg = /^((0?[1-9]|[12]\d)\/(0?[1-9]|1[0-2])|30\/(0?[13-9]|1[0-2])|31\/(0?[13578]|1[02]))\/\d{4}$/;

    return data.match(dateReg)

    }

     

    Como faz tempo que eu usei essa função... eu nao lembro se valida ano bissexto...

     

    Valeu!

    Wednesday, July 16, 2008 6:37 PM
  • Quanto a isso ta tudo testado =D
    Mas vlw
    Wednesday, July 16, 2008 7:27 PM