verificação de data [resolvido]

Olá pessoal!

Tenho uma webaaplication e quero que qd o susuario digitar a data no formato ddmmaa (dia/mes/ano), verifique se a data esta correta.

Fiz este codigo, mas está com erro, alguém sabe o que é?


<p>Data:<input type="text" maxlength="6" OnKeyPress="NumbersOnly();" name="data" size="8" onKeyDown="if(event.keyCode==13) event.keyCode=9;"/>

<%
var dia=0;
var mes=0;
var ano=0;
var datav=0;


for (dia=1;dia<=31;dia++) {
    for (mes=1;mes<=12;mes++) {
        for (ano=07;ano<=20;ano++) {

if (dia+mes+ano=document.getElementById(data);){

}
else
{
%>
 <script type="text/javascript">
 	alert("DATA INVÁLIDA!");
   </script>
<%

}
}
}
}
%>

Grata…

Cris, eu fiz deste jeito, sendo;

public static boolean checkNotTomorrow(int date) {
String data = Integer.toString(date);
boolean result = true;
SimpleDateFormat sdf2 = new SimpleDateFormat();
sdf2.applyPattern(Globals.DATE_PATTERN);
sdf2.setLenient(false);

try {
Date d = sdf2.parse(data);
return checkNotTomorrow(d);
} catch (Exception e) {
result = false;
}
return result;
}

public static final String DATE_PATTERN = “yyyyMMdd”;

Vc pode alterar para ddMMyyy

Cris, espero ter ajudado, qualquer dúvida dá um toque, ahh eu estou usando o Struts, este método eu estou usando no formulário…

hummm…vou tentar aqui…Obrigada…

Ahhh só não entendi uma coisa nessa public que vc fez ele compara a data que o usuário fez com uma função de data do java (SimpleDateFormat())?

Pessoal da uma olhada nessa function para mim, só retorna que a data é inválida, mesmo quando coloco uma data válida 020409(ddmmaa).

<p>Data:<input type="text" maxlength="6"  onBlur="VerificaData(this.value);" OnKeyPress="NumbersOnly();" name="data" size="8" onKeyDown="if(event.keyCode==13) event.keyCode=9;"/>

<script language="JavaScript">

//VALIDAÇÃO DA DATA

function VerificaData(digData)
{
    var bissexto = 0;
    var data = digData;
    var tam = data.length;
    if (tam == 6)
    {
        var dia = data.substr(0,2)
        var mes = data.substr(3,2)
        var ano = data.substr(6,4)
        if ((ano > 00)||(ano < 40))
        {
            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 é válida!");

    }
    alert("A Data "+data+" é inválida!");
    document.getElementById("data").focus();

    return false;
}
</script>

Alguém sabe ql o problema?

Cris, observei um possível equivoco na sua função substr confira se eh isso:


         var dia = data.substr(0,2)
         var mes = data.substr(2,4)
         var ano = data.substr(4,6)

Prq vc nao usa a função split(); semelhante ao Java …


var dia = data.substr(0,2)
var mes = data.substr(3,2)
 var ano = data.substr(6,4)

Faça isso

var arrayData = new Array(3);
arrayData  = data.split("/");

document.write("Dia "+arrayData[0]);
document.write("Mes "+arrayData[1]);
document.write("Ano "+arrayData[2]);

Show de bola… Essa nao eu conhecia ramilani12…

[quote=ramilani12]Prq vc nao usa a função split(); semelhante ao Java …


var dia = data.substr(0,2)
var mes = data.substr(3,2)
 var ano = data.substr(6,4)

Faça isso

var arrayData = new Array(3);
arrayData  = data.split("/");

document.write("Dia "+arrayData[0]);
document.write("Mes "+arrayData[1]);
document.write("Ano "+arrayData[2]);

[/quote]

Vlw Romilani e Caio, deu certinho… :smiley:

<p>Data:<input type="text" maxlength="10"  onBlur="VerificaData(this.value);" name="data" size="8" onKeyDown="if(event.keyCode==13) event.keyCode=9;"/>

<script language="JavaScript">

//VALIDAÇÃO DA DATA

function VerificaData(digData)
{
    var bissexto = 0;
    var data = digData;
    var tam = data.length;
    if (tam == 10)
    {
      var arrayData = new Array(3);
     arrayData  = data.split("/");


        if ((arrayData[2] >= 2006)&&(arrayData[2] <= 3001))
        {
            switch (arrayData[1])
            {
                case '01':
                case '03':
                case '05':
                case '07':
                case '08':
                case '10':
                case '12':
                    if  (arrayData[0] <= 31)
                    {
                        return true;
                    }
                    break

                case '04':
                case '06':
                case '09':
                case '11':
                    if  (arrayData[0] <= 30)
                    {
                        return true;
                    }
                    break
                case '02':
                    /* Validando ano Bissexto / fevereiro / dia */
                    if ((arrayData[2] % 4 == 0) || (ano % arrayData[2] == 0) || (arrayData[2] % 400 == 0))
                    {
                        bissexto = 1;
                    }
                    if ((bissexto == 1) && (arrayData[2] <= 29))
                    {
                        return true;
                    }
                    if ((bissexto != 1) && (arrayData[2] <= 28))
                    {
                        return true;
                    }
                    break
            }
        }
    }
    alert("A Data "+data+" é inválida!");
    document.getElementById("data").focus();

    return false;
}

</script>