Validar uma data com ASP

Vejamos uma função criada com Active Server Pages para fazer uma comprovação de datas. A função recebe um dia, um mês e um ano e comprovam que estes sejam numéricos e que a data criada entre todos é correta e possível no calendário.

A função recebe os dados de dia, mês e ano como string, tal como poderíamos chegar através de um formulário ou como parâmetro em uma URL. Não obstante, visto que ASP é uma linguagem pouco “typed”, mesmo passando valores numéricos à função continuará dando resultados corretos.

Como resultado a função devolverá um valor verdadeiro ou falso, dependendo se a data é correta ou incorreta.

O código da função é o seguinte:

‘valido uma data
‘espero receber tres strings com o dia, o mes e o ano

function validarData(dia,mes,ano)

‘elimino possiveis espacos aos lados dos numeros que recebo por parametro

dia = trim(dia)
mes = trim(mes)
ano = trim(ano)

‘comprovo nº de caracteres que recebo em cada parametro sao os permitidos
‘O ano pode ter ate 4 caracteres

if len(dia)=0 or len(dia)>2 or len(mes)=0 or len(mes)>2 or len(ano)=0 or len(ano)>4 then
validarData = false
exit function
end if

‘compovo que os caracteres dos parametros sao numeros

if (not isNumeric(dia)) or (not isNumeric(mes)) or (not isNumeric(ano)) then
validarData = false
exit function
end if

‘O mes nao pode ser maior que 12 nem menor que 1

mes = cint(mes)
if mes > 12 or mes < 1 then
validarData = false
exit function
end if
dia = cint(dia)

‘O dia nao pode ser menor que 1

if dia < 1 then
validarData = false
exit function
end if

‘O dia, dependendo do mes que seja, pode ter uns ou outros valores

if mes=1 or mes=3 or mes=5 or mes=7 or mes=8 or mes=10 or mes=12 then

‘nesses meses pode ter 31 dias

if dia > 31 then
validarData = false
exit function
end if
elseif mes=2 then

‘en fevereiro temos que ver se sera ano bissexto
‘consigo o numero de ano de 4 cifras.
‘se nos derem um valor de 2 cifras < 31 se refere a 2000 mais esse valor

if ano < 31 then
ano = ano + 2000

‘se nos derem um valor de 2 cifras > 31 se refere a 1900 mais esse valor

elseif ano < 100 then
ano = ano + 1900
end if

‘calculo se o ano eh bissexto
‘se for divisivel por quatro e (nao divisivel por 100 ou divisivel por 400)

if ((ano mod 4)=0) and ((ano mod 100)<>0 or (ano mod 400)=0) then

‘eh bissexto

if dia > 29 then
validarData = false
exit function
end if
else

‘NAO eh bissexto

if dia > 28 then
validarData = false
exit function
end if
end if
else

‘em todos os demais meses chegam a ter 30 dias

if dia > 30 then
validarData = false
exit function
end if
end if

‘se estou aqui eh porque todas as comprovacoes foram positivas

validarData = true
end function

O código da função está comentado para que possa ser entendido mais facilmente. Basicamente, o que faz é realizar uma série de comprovações, uma atrás da outra. Se alguma das comprovações faz com que a data seja incorreta, devolve-se o valor false e sai da função. Se chega-se ao final da função e nenhuma das comprobações falhou, se devolve true, pois a data é correta.

Na hora de calcular se um dia é válido, temos que saber os dias que tem um mês. Temos que prestar especial atenção ao mês de fevereiro, para saber se é bissexto. Para saber se um ano é bissexto existe a seguinte regra:

  • São bissextos todos os anos divisíveis por 4, excluindo os que sejam divisíveis por 100, mas não excluindo os que sejam divisíveis por 400.

Deixe um comentário