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.