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.
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
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.