Función para comprobar si una fecha es correcta, es decir, si es un día mes y año son correctos, en páginas programadas con ASP.
Veamos una función creada con Active Server Pages para hacer una comprobación de fechas. La función recibe un día, un mes y un año y comprueba que estos sean numéricos y que la fecha creada entre todos es correcta y posible en el calendario.
La función recibe los datos de día mes y año como string, tal como podrían llegarnos a través de un formulario o como parámetro en una URL. No obstante, dado que ASP es un lenguaje poco tipado, aunque pasemos valores numéricos a la función seguirá dando resultados correctos.
Como resultado la función devolverá un valor verdadero o falso, dependiendo si la fecha es correcta o incorrecta.
El código de la función es el siguiente:
'valido una fecha
'espero recibir tres strings con el dia, el mes y el año
function validarFecha(dia,mes,ano)
'elimino posibles espacios a los lados de los números que recibo por parámetro
dia = trim(dia)
mes = trim(mes)
ano = trim(ano)
'compruebo nº de caracteres que recibo en cada parámetro son los permitidos
'El año puede tener hasta 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
validarFecha = false
exit function
end if
'compruebo que los caracteres de los parámetros son números
if (not isNumeric(dia)) or (not isNumeric(mes)) or (not isNumeric(ano)) then
validarFecha = false
exit function
end if
'El mes no puede ser mayor que 12 ni menor que 1
mes = cint(mes)
if mes > 12 or mes < 1 then
validarFecha = false
exit function
end if
dia = cint(dia)
'El día no puede ser menor que 1
if dia < 1 then
validarFecha = false
exit function
end if
'El dia, dependiendo del mes que sea, puede tener unos u otros valores
if mes=1 or mes=3 or mes=5 or mes=7 or mes=8 or mes=10 or mes=12 then
'en estos meses puede haber 31 dias
if dia > 31 then
validarFecha = false
exit function
end if
elseif mes=2 then
'en febrero tenemos que ver si es año bisiesto
'consigo el numero de año de 4 cifras.
'si nos dan un valor de 2 cifras < 31 se refiere a 2000 más ese valor
if ano < 31 then
ano = ano + 2000
'si nos dan un valor de 2 cifras > 31 se refiere a 1900 más ese valor
elseif ano < 100 then
ano = ano + 1900
end if
'calculo si el año es bisiesto
'si es divisible por cuatro y (no divisible por 100 o divisible por 400)
if ((ano mod 4)=0) and ((ano mod 100)<>0 or (ano mod 400)=0) then
'es bisiesto
if dia > 29 then
validarFecha = false
exit function
end if
else
'NO es bisiesto
if dia > 28 then
validarFecha = false
exit function
end if
end if
else
'en todos los demás meses llegan a tener 30 dias
if dia > 30 then
validarFecha = false
exit function
end if
end if
'si estoy aquí es que todas las comprobaciones han sido positivas
validarFecha = true
end function
El código de la función está comentado para que se pueda entender más fácilmente. Básicamente lo que hace es realizar una serie de comprobaciones, una tras otra. Si alguna de las comprobaciones hace que la fecha sea incorrecta, se devuelve el valor false y se sale de la función. Si se llega al final de la función y ninguna de las comprobaciones falló, se devuelve true, pues la fecha es correcta.
A la hora de calcular si un día es válido, tenemos que saber los días que tiene un mes. Hay que prestar especial atención al mes de febrero, para saber si es bisiesto. Para saber si un año es bisiesto existe la regla siguiente:
La función recibe los datos de día mes y año como string, tal como podrían llegarnos a través de un formulario o como parámetro en una URL. No obstante, dado que ASP es un lenguaje poco tipado, aunque pasemos valores numéricos a la función seguirá dando resultados correctos.
Como resultado la función devolverá un valor verdadero o falso, dependiendo si la fecha es correcta o incorrecta.
El código de la función es el siguiente:
'valido una fecha
'espero recibir tres strings con el dia, el mes y el año
function validarFecha(dia,mes,ano)
'elimino posibles espacios a los lados de los números que recibo por parámetro
dia = trim(dia)
mes = trim(mes)
ano = trim(ano)
'compruebo nº de caracteres que recibo en cada parámetro son los permitidos
'El año puede tener hasta 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
validarFecha = false
exit function
end if
'compruebo que los caracteres de los parámetros son números
if (not isNumeric(dia)) or (not isNumeric(mes)) or (not isNumeric(ano)) then
validarFecha = false
exit function
end if
'El mes no puede ser mayor que 12 ni menor que 1
mes = cint(mes)
if mes > 12 or mes < 1 then
validarFecha = false
exit function
end if
dia = cint(dia)
'El día no puede ser menor que 1
if dia < 1 then
validarFecha = false
exit function
end if
'El dia, dependiendo del mes que sea, puede tener unos u otros valores
if mes=1 or mes=3 or mes=5 or mes=7 or mes=8 or mes=10 or mes=12 then
'en estos meses puede haber 31 dias
if dia > 31 then
validarFecha = false
exit function
end if
elseif mes=2 then
'en febrero tenemos que ver si es año bisiesto
'consigo el numero de año de 4 cifras.
'si nos dan un valor de 2 cifras < 31 se refiere a 2000 más ese valor
if ano < 31 then
ano = ano + 2000
'si nos dan un valor de 2 cifras > 31 se refiere a 1900 más ese valor
elseif ano < 100 then
ano = ano + 1900
end if
'calculo si el año es bisiesto
'si es divisible por cuatro y (no divisible por 100 o divisible por 400)
if ((ano mod 4)=0) and ((ano mod 100)<>0 or (ano mod 400)=0) then
'es bisiesto
if dia > 29 then
validarFecha = false
exit function
end if
else
'NO es bisiesto
if dia > 28 then
validarFecha = false
exit function
end if
end if
else
'en todos los demás meses llegan a tener 30 dias
if dia > 30 then
validarFecha = false
exit function
end if
end if
'si estoy aquí es que todas las comprobaciones han sido positivas
validarFecha = true
end function
El código de la función está comentado para que se pueda entender más fácilmente. Básicamente lo que hace es realizar una serie de comprobaciones, una tras otra. Si alguna de las comprobaciones hace que la fecha sea incorrecta, se devuelve el valor false y se sale de la función. Si se llega al final de la función y ninguna de las comprobaciones falló, se devuelve true, pues la fecha es correcta.
A la hora de calcular si un día es válido, tenemos que saber los días que tiene un mes. Hay que prestar especial atención al mes de febrero, para saber si es bisiesto. Para saber si un año es bisiesto existe la regla siguiente:
- Son bisiestos todos los años divisibles por 4, excluyendo los que sean divisibles por 100, pero no los que sean divisibles por 400.
Miguel Angel Alvarez
Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...