Está usted en Indice > Construcción > Lenguajes > ASP > Lecciones y Paso a Paso > Tres funciones útiles para fechas en ASP
Construcción
Maletín
Utilidades
Cursos
Promoción
Rentabilidad
Zona Novatos
Foros
Acceso a tu cuenta

Tres funciones útiles para fechas en ASP

En este artículo os presento tres funciones para trabajar con fechas. Son especialmente útiles para recoger una fecha introducida en un formulario, validarla (¡con nuestro formato!) y convertirla a un tipo Date válido para emplearla en el resto del código. La validacion se hace con el objeto RegExp, lo que la hace bastante interesante. La última función nos devuelve una cadena para emplearla como fecha en una sentencia SQL.

¿Para qué validar fechas?

Bien, suponed que tenemos un formulario para que un usuario busque datos entre dos rangos determinados de fechas. Tenemos dos opciones: le dejamos que escriba él mismo la fecha o le presentamos varias listas desplegables para que elija día, mes y año. Si elegimos la primera, tenemos que comprobar que no introduzca como fecha "33/13/2001" porque daría un resultado impredecible, así como "25/prueba/001" que desde luego tampoco es un tipo fecha válido.

Aquí tenéis una función ValidarFecha que recibe una cadena para validar, un valor True o False dependiendo de si queremos validar la fecha en formato hispano o anglosajón. Todo el código fuente está disponible para descargar al final del artículo, pero vamos a ver cómo se hace la validación:

Function ValidarFecha ( expr, formato )
'Comprueba si una expresión
'es válida como fecha, dependiendo del formato
'* Si formato es True se valida como fecha hispana
'* Si formato es False se valida como fecha anglosajona
Dim oER

set oER = New RegExp
if formato = True then 
	oER.Pattern = "^(0?[1-9]|1[0-9]|2|2[0-9]|3[0-1])/(0?[1-9]|1[0-2])/(d{2}|d{4})$"
else
	oER.Pattern = "^(0?[1-9]|1[0-2])/(0?[1-9]|1[0-9]|2|2[0-9]|3[0-1])/(d{2}|d{4})$"
end if
oER.Global = True
oER.IgnoreCase = True

ValidarFecha = oER.Test(expr)

set oER = nothing

End Function 'ValidarFecha

Como véis simplemente se comprueba un patrón, que aquí os explico en más detalle:

^ Coincide con el principio de la entrada
0 Acepta un cero
? Una o ninguna apariciones del carácter anterior (es decir, uno o ningún cero)
[..|...|..|..] Una de las expresiones separadas por barras (ésta o ésta o...)
[1-9] Coincide con un dígito entre 1 y 9
3[0-1] Coincide con 30 y 31: 3 y uno de los caracteres entre corchetes. En nuestra función hay varios similares, para indicar los números que aceptamos (1 a 12 en meses, 1 a 31 en días)
/ Coincide con la barra que separa día, mes y año
{n} Lo anterior aparece exactamente n veces. En nuestra función, lo utilizamos al final para indicar que queremos el año representado con dos ({2}) o cuatro ({4}) dígitos.
$ Coincide con el final de la cadena

Si el parámetro formato es falso, tenemos que validar la fecha en formato anglosajón, así que simplemente cambiamos el orden en en patrón. Fijaos con son idénticos, excepto que la validación del día en el primero (hasta la primera barra /) va en segundo lugar en el segundo patrón y viceversa.

La función devuelve si se encuentra el patrón no, limpiar el objeto RegExp y ya está.

Algunos ejemplos de cómo funciona:

ValidarFecha("01/01/2001") Verdadero
ValidarFecha("01/13/01") Falso (no existe mes 13)
ValidarFecha("32/10/1998") Falso (no hay día 32)
ValidarFecha ("20/06/001") Falso (el año con 2 o 4 dígitos: 01 o 2001 o 1901)


Usuarios que han visto este tema también han visto...

- Validación de E-Mails con ASP
- Agilizar la carga de tus páginas ASP
- Los objetos y las funciones en las páginas ASP
- Qué es ASP
- Procedimientos y funciones en ASP


Versión imprimible - Versión imprimible de este documento
Enviar e-mail - Enviar por e-mail este documento
Publicidad

Información legal | Política de Privacidad | Contacte con nosotros

Otro proyecto de Factoría de Internet. Copyright© 2003-2008 Factoría de Internet S.L.. Todos los derechos reservados.


Página generada el 04-12-2008 a las 07:11:43