Validar una fecha con ASP
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.
26/7/05 - 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:
- Son bisiestos todos los años divisibles por 4, excluyendo los que sean divisibles por 100, pero no los que sean divisibles por 400.
Seguir navegando a partir aquí:
+ 1 manual relacionado
+ 1 categoria relacionada
+ 1 comentario (Añadir)
+ 2 comentarios no revisados
| Autoría, licencia y acciones sobre este artículo |
|
Informe de Miguel Angel Alvarez* Director de DesarrolloWeb.com
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
* Para consultas técnicas utilizar la lista de correo.
|
Manuales relacionados con este artículo
Categorias relacionadas
A través de las categorías de nuestro directorio se pueden encontrar otro tipo de recursos relacionados con este artículo:
+ Entrar en
Scripts en ASP
Comentarios de los visitantes
|
Los comentarios de los visitantes son para ampliar la información del artículo. Cualquiera puede participar.
|
| Se muestra un comentario revisado |
Comentario de X-TUS
15/2/06
No es mas facil hacer:
if IsDate(FechaIntroducida) then
Response.Write("La fecha es correcta")
else
Response.Write("La fecha es incorrecta")
End if
y si tienes la fecha dividida en 3 variables seria asi:
if IsDate(Dia & "/"& Mes &"/"& Ano) then
Response.Write("La fecha es correcta")
else
Response.Write("La fecha es incorrecta")
End if
Un saludo
| Comentarios sin revisar |
|
Entre los comentarios no revisados puede haber algunos interesantes que se hayan enviado recientemente.
|
Se han encontrado 2 comentarios sin revisar
Ir arriba