Validar fecha

21/07/2005 - 17:13 por Vrr | Informe spam
Hola a todos...

Alguien sabe de alguna función en jscript que me indique si un valor
determinado es de tipo fecha?

Tengo un formulario donde capturo fecha inicial y final y luego hago una
consulta donde el resultado está en ese rango de fechas... el problema es que
si la fecha no es correcta, p.e. si pongo 31/02/2005 el sql me da un error de
que el valor datetime está fuera del intervalo... es por esto que quiero
hacer la validación.

Encontré una función pero está en vbscript y yo la necesito en jscript o
la otra alternativa podría ser cómo llamar a una función vbscript desde una
jscript...

Gracias.

Preguntas similare

Leer las respuestas

#1 Pantxo
21/07/2005 - 17:39 | Informe spam
Yo suelo usar esta:

function valfecha(input, msg, echo){
// FORMATO dd/mm/aaaa
var d=new Date();
meses31='1,3,5,7,8,10,12'
msg = sdatoserr + msg + ':' + input.value + '' + snofecha;
var arrfecha;
arrfecha=input.value.split('/');
if (arrfecha.length!=3){
if (echo){
alert(msg);
input.select();
}
return false;
}
if (arrfecha[0].length==0 || arrfecha[1].length==0 ||
arrfecha[2].length==0){
if (echo){
alert(msg);
input.select();
}
return false;
}
for (var j=0; j<2; j++){
for (i = 0; i < arrfecha[j].length; i++) {
ch = arrfecha[j].substring(i, i + 1)
if (ch < '0' || '9' < ch) {
if (echo){
alert(msg);
input.select();
}
return false;
}
}
}
if (arrfecha[0].substring(0,1)=='0')
arrfecha[0]=arrfecha[0].substring(1,arrfecha[0].length);
if (arrfecha[1].substring(0,1)=='0')
arrfecha[1]=arrfecha[1].substring(1,arrfecha[1].length);
if (arrfecha[2] < 1 || arrfecha[2] > d.getFullYear()){
if (echo){
alert(msg);
input.select();
}
return false;
}
if (arrfecha[1] < 1 || arrfecha[1] > 12){
if (echo){
alert(msg);
input.select();
}
return false;
}
if (arrfecha[0] < 1 || arrfecha[0]>31 || (arrfecha[0]=1 &&
meses31.search(arrfecha[1])==-1)) {
if (echo){
alert(msg);
input.select();
}
return false;
}
if (arrfecha[1]==2 && arrfecha[0]>28){
if (arrfecha[0]!) || (arrfecha[2]%4)!=0){
if (echo){
alert(msg);
input.select();
}
return false;
}
}
return true;
}

La función devuelve 'true' si es una fecha correcta y 'false' si no lo es

Los parámetros que reciben son:
input: control del formalurio que contiene la fecha en su propiedad
value
msg: nombre del campo (para el usuario, se utiliza para crear el mensaje
de aviso)
echo: 'true' devuelve un mensaje de error y selecciona el control del
formulario
'false' la función devuelve el valor sin realizar ninguna
acción de cara al usuario

Un saludo

Pantxo

"Vrr" escribió en el mensaje
news:
Hola a todos...

Alguien sabe de alguna función en jscript que me indique si un valor
determinado es de tipo fecha?

Tengo un formulario donde capturo fecha inicial y final y luego hago una
consulta donde el resultado está en ese rango de fechas... el problema es


que
si la fecha no es correcta, p.e. si pongo 31/02/2005 el sql me da un error


de
que el valor datetime está fuera del intervalo... es por esto que quiero
hacer la validación.

Encontré una función pero está en vbscript y yo la necesito en jscript


o
la otra alternativa podría ser cómo llamar a una función vbscript desde


una
jscript...

Gracias.
Respuesta Responder a este mensaje
#2 Pantxo
21/07/2005 - 17:52 | Informe spam
Creo que lo que comentas es un error Matias.
No puedes permitir en tú página que introduzcan las fechas en dos formatos
distintos como comentas.
Tal y como dices si permites que se introduzcan fechas en formatos
DD/MM/YYYY y DD/MM/YYYY en el caso de que uno de los dos primeros valores
sea mayor que 12 la aplicación la tomará comodía y no exisitirá ningún
problema. Pero ¿qué pasa si el usuario introduce una fecha como el 4 de
mayo? Si recibes del formulario el 04/05/2005 o el 05/04/2005 ¿cómo puedes
saber a qué fecha se está refiriendo?
El formato de introducción de fecha debes indicárselo tú, no puedes dejar
que cada cual introduzca el que le parezca porque ¿qué harías con una fecha
del tipo 03/02/04? ¿3 de febrero del 2004? ¿2 de marzo del 2004? ¿4 de
febrero del 2003?...

Un saludo

Pantxo

"Matias Iacono" escribió en el mensaje
news:
En javascript es dificil. Mas, teniendo en cuenta que no podrias saber
especificamente si es o no una fecha.

Por lo general, las validaciones con JS solo verifican que se haya
introducido /, y que solo sean caracteres numericos.

Esto debido a que una fecha, en web, puede ser introducida de diferentes
formatos dependiendo del lugar desde donde se acceda a la pagina.

Por ejemplo, algunos usan DD/MM/YYYY, otros MM/DD/YYYY, etc.

Por eso, lo mejor que puedes hacer para validar una fecha, es hacerlo


desde
el ASP, con el comando ISDATE, esto te retornara verdadero o falso
dependiendo de que si es una fecha o no.

Saludos,

Matias Iacono
Microsoft MVP ASP/ASP.net - DC3



https://mvp.support.microsoft.com/profiležACEDFE-6C76-4156-ACE3-BD3E257868B7
"Vrr" escribió en el mensaje
news:
> Hola a todos...
>
> Alguien sabe de alguna función en jscript que me indique si un valor
> determinado es de tipo fecha?
>
> Tengo un formulario donde capturo fecha inicial y final y luego hago una
> consulta donde el resultado está en ese rango de fechas... el problema


es
que
> si la fecha no es correcta, p.e. si pongo 31/02/2005 el sql me da un


error
de
> que el valor datetime está fuera del intervalo... es por esto que quiero
> hacer la validación.
>
> Encontré una función pero está en vbscript y yo la necesito en


jscript
o
> la otra alternativa podría ser cómo llamar a una función vbscript desde
una
> jscript...
>
> Gracias.


Respuesta Responder a este mensaje
#3 Pantxo
21/07/2005 - 18:08 | Informe spam
Pero, como te decía antes, ¿cómo interpretas una fecha correctamente sin
saber en qué formato lo está introduciendo el usuario?

"Matias Iacono" escribió en el mensaje
news:
De hecho, no es un error. Cuando se trabaja con aplicaciones multidioma,


por
ejemplo, los formatos son totalmente diferentes de una cultura a la otra.


Y,
manipular cada uno de los formatos para restringir la introduccion de los
mismos se torna una tarea imposible o inecesaria.

Por eso, la validacion de fechas desde el codigo ASP resulta mucho mas


facil
y mejor controlable.

Saludos,

Matias Iacono
Microsoft MVP ASP/ASP.net - DC3



https://mvp.support.microsoft.com/profiležACEDFE-6C76-4156-ACE3-BD3E257868B7
"Pantxo" escribió en el mensaje
news:
> Creo que lo que comentas es un error Matias.
> No puedes permitir en tú página que introduzcan las fechas en dos


formatos
> distintos como comentas.
> Tal y como dices si permites que se introduzcan fechas en formatos
> DD/MM/YYYY y DD/MM/YYYY en el caso de que uno de los dos primeros


valores
> sea mayor que 12 la aplicación la tomará comodía y no exisitirá ningún
> problema. Pero ¿qué pasa si el usuario introduce una fecha como el 4 de
> mayo? Si recibes del formulario el 04/05/2005 o el 05/04/2005 ¿cómo


puedes
> saber a qué fecha se está refiriendo?
> El formato de introducción de fecha debes indicárselo tú, no puedes


dejar
> que cada cual introduzca el que le parezca porque ¿qué harías con una
fecha
> del tipo 03/02/04? ¿3 de febrero del 2004? ¿2 de marzo del 2004? ¿4 de
> febrero del 2003?...
>
> Un saludo
>
> Pantxo
>
> "Matias Iacono" escribió en el mensaje
> news:
> > En javascript es dificil. Mas, teniendo en cuenta que no podrias saber
> > especificamente si es o no una fecha.
> >
> > Por lo general, las validaciones con JS solo verifican que se haya
> > introducido /, y que solo sean caracteres numericos.
> >
> > Esto debido a que una fecha, en web, puede ser introducida de


diferentes
> > formatos dependiendo del lugar desde donde se acceda a la pagina.
> >
> > Por ejemplo, algunos usan DD/MM/YYYY, otros MM/DD/YYYY, etc.
> >
> > Por eso, lo mejor que puedes hacer para validar una fecha, es hacerlo
> desde
> > el ASP, con el comando ISDATE, esto te retornara verdadero o falso
> > dependiendo de que si es una fecha o no.
> >
> > Saludos,
> >
> > Matias Iacono
> > Microsoft MVP ASP/ASP.net - DC3
> >
>



https://mvp.support.microsoft.com/profiležACEDFE-6C76-4156-ACE3-BD3E257868B7
> > "Vrr" escribió en el mensaje
> > news:
> > > Hola a todos...
> > >
> > > Alguien sabe de alguna función en jscript que me indique si un valor
> > > determinado es de tipo fecha?
> > >
> > > Tengo un formulario donde capturo fecha inicial y final y luego hago
una
> > > consulta donde el resultado está en ese rango de fechas... el


problema
> es
> > que
> > > si la fecha no es correcta, p.e. si pongo 31/02/2005 el sql me da un
> error
> > de
> > > que el valor datetime está fuera del intervalo... es por esto que
quiero
> > > hacer la validación.
> > >
> > > Encontré una función pero está en vbscript y yo la necesito en
> jscript
> > o
> > > la otra alternativa podría ser cómo llamar a una función vbscript
desde
> > una
> > > jscript...
> > >
> > > Gracias.
> >
> >
>
>


Respuesta Responder a este mensaje
#4 Vrr
21/07/2005 - 18:10 | Informe spam
Hola a los dos, gracias por contestar...

Me parece que pantxo tiene razón matías, o al menos para mi página se aplica
lo que el comenta... ya probé con isdate de asp y me dio el siguiente
problema:

yo le digo al usuario que el formato con el que debe capturar es dd/mm/aaaa
y por ejemplo si el usuario captura 05/13/2005 (lo cual sería incorrecto
según el formato indicado) y valido este dato con isdate me dice que es una
fecha válida...

yo creo que más bien al isdate le faltaría algo para indicar con qué formato
quieres validar...

algo como : IsDate(miFecha,formato)

donde formato pueda ser 1: dd/mm/aaaa ; 2: aaaa/mm/dd ; etc...

desafortunadamente esto no se puede

Saludos.

"Matias Iacono" escribió:

De hecho, no es un error. Cuando se trabaja con aplicaciones multidioma, por
ejemplo, los formatos son totalmente diferentes de una cultura a la otra. Y,
manipular cada uno de los formatos para restringir la introduccion de los
mismos se torna una tarea imposible o inecesaria.

Por eso, la validacion de fechas desde el codigo ASP resulta mucho mas facil
y mejor controlable.

Saludos,

Matias Iacono
Microsoft MVP ASP/ASP.net - DC3
https://mvp.support.microsoft.com/profiležACEDFE-6C76-4156-ACE3-BD3E257868B7
"Pantxo" escribió en el mensaje
news:
> Creo que lo que comentas es un error Matias.
> No puedes permitir en tú página que introduzcan las fechas en dos formatos
> distintos como comentas.
> Tal y como dices si permites que se introduzcan fechas en formatos
> DD/MM/YYYY y DD/MM/YYYY en el caso de que uno de los dos primeros valores
> sea mayor que 12 la aplicación la tomará comodía y no exisitirá ningún
> problema. Pero ¿qué pasa si el usuario introduce una fecha como el 4 de
> mayo? Si recibes del formulario el 04/05/2005 o el 05/04/2005 ¿cómo puedes
> saber a qué fecha se está refiriendo?
> El formato de introducción de fecha debes indicárselo tú, no puedes dejar
> que cada cual introduzca el que le parezca porque ¿qué harías con una
fecha
> del tipo 03/02/04? ¿3 de febrero del 2004? ¿2 de marzo del 2004? ¿4 de
> febrero del 2003?...
>
> Un saludo
>
> Pantxo
>
> "Matias Iacono" escribió en el mensaje
> news:
> > En javascript es dificil. Mas, teniendo en cuenta que no podrias saber
> > especificamente si es o no una fecha.
> >
> > Por lo general, las validaciones con JS solo verifican que se haya
> > introducido /, y que solo sean caracteres numericos.
> >
> > Esto debido a que una fecha, en web, puede ser introducida de diferentes
> > formatos dependiendo del lugar desde donde se acceda a la pagina.
> >
> > Por ejemplo, algunos usan DD/MM/YYYY, otros MM/DD/YYYY, etc.
> >
> > Por eso, lo mejor que puedes hacer para validar una fecha, es hacerlo
> desde
> > el ASP, con el comando ISDATE, esto te retornara verdadero o falso
> > dependiendo de que si es una fecha o no.
> >
> > Saludos,
> >
> > Matias Iacono
> > Microsoft MVP ASP/ASP.net - DC3
> >
>
https://mvp.support.microsoft.com/profiležACEDFE-6C76-4156-ACE3-BD3E257868B7
> > "Vrr" escribió en el mensaje
> > news:
> > > Hola a todos...
> > >
> > > Alguien sabe de alguna función en jscript que me indique si un valor
> > > determinado es de tipo fecha?
> > >
> > > Tengo un formulario donde capturo fecha inicial y final y luego hago
una
> > > consulta donde el resultado está en ese rango de fechas... el problema
> es
> > que
> > > si la fecha no es correcta, p.e. si pongo 31/02/2005 el sql me da un
> error
> > de
> > > que el valor datetime está fuera del intervalo... es por esto que
quiero
> > > hacer la validación.
> > >
> > > Encontré una función pero está en vbscript y yo la necesito en
> jscript
> > o
> > > la otra alternativa podría ser cómo llamar a una función vbscript
desde
> > una
> > > jscript...
> > >
> > > Gracias.
> >
> >
>
>



Respuesta Responder a este mensaje
#5 Vrr
21/07/2005 - 18:20 | Informe spam
Además el mayor problema viene al tratar de insertar en la base de datos...
por que si trato de insertar 05/13/2005 que según isdate es una fecha válida,
sql me da error por que según él el formato no es válido, en todo caso
debería ser 13/05/2005 y ahí viene el problema que comenta pantxo... por eso,
al menos en mi aplicación es importante utilizar un solo formato de fecha, en
este caso dd/mm/aaaa para que al insertar en la db no me cause problemas.

Saludos.

"Vrr" escribió:

Hola a los dos, gracias por contestar...

Me parece que pantxo tiene razón matías, o al menos para mi página se aplica
lo que el comenta... ya probé con isdate de asp y me dio el siguiente
problema:

yo le digo al usuario que el formato con el que debe capturar es dd/mm/aaaa
y por ejemplo si el usuario captura 05/13/2005 (lo cual sería incorrecto
según el formato indicado) y valido este dato con isdate me dice que es una
fecha válida...

yo creo que más bien al isdate le faltaría algo para indicar con qué formato
quieres validar...

algo como : IsDate(miFecha,formato)

donde formato pueda ser 1: dd/mm/aaaa ; 2: aaaa/mm/dd ; etc...

desafortunadamente esto no se puede

Saludos.

"Matias Iacono" escribió:

> De hecho, no es un error. Cuando se trabaja con aplicaciones multidioma, por
> ejemplo, los formatos son totalmente diferentes de una cultura a la otra. Y,
> manipular cada uno de los formatos para restringir la introduccion de los
> mismos se torna una tarea imposible o inecesaria.
>
> Por eso, la validacion de fechas desde el codigo ASP resulta mucho mas facil
> y mejor controlable.
>
> Saludos,
>
> Matias Iacono
> Microsoft MVP ASP/ASP.net - DC3
> https://mvp.support.microsoft.com/profiležACEDFE-6C76-4156-ACE3-BD3E257868B7
> "Pantxo" escribió en el mensaje
> news:
> > Creo que lo que comentas es un error Matias.
> > No puedes permitir en tú página que introduzcan las fechas en dos formatos
> > distintos como comentas.
> > Tal y como dices si permites que se introduzcan fechas en formatos
> > DD/MM/YYYY y DD/MM/YYYY en el caso de que uno de los dos primeros valores
> > sea mayor que 12 la aplicación la tomará comodía y no exisitirá ningún
> > problema. Pero ¿qué pasa si el usuario introduce una fecha como el 4 de
> > mayo? Si recibes del formulario el 04/05/2005 o el 05/04/2005 ¿cómo puedes
> > saber a qué fecha se está refiriendo?
> > El formato de introducción de fecha debes indicárselo tú, no puedes dejar
> > que cada cual introduzca el que le parezca porque ¿qué harías con una
> fecha
> > del tipo 03/02/04? ¿3 de febrero del 2004? ¿2 de marzo del 2004? ¿4 de
> > febrero del 2003?...
> >
> > Un saludo
> >
> > Pantxo
> >
> > "Matias Iacono" escribió en el mensaje
> > news:
> > > En javascript es dificil. Mas, teniendo en cuenta que no podrias saber
> > > especificamente si es o no una fecha.
> > >
> > > Por lo general, las validaciones con JS solo verifican que se haya
> > > introducido /, y que solo sean caracteres numericos.
> > >
> > > Esto debido a que una fecha, en web, puede ser introducida de diferentes
> > > formatos dependiendo del lugar desde donde se acceda a la pagina.
> > >
> > > Por ejemplo, algunos usan DD/MM/YYYY, otros MM/DD/YYYY, etc.
> > >
> > > Por eso, lo mejor que puedes hacer para validar una fecha, es hacerlo
> > desde
> > > el ASP, con el comando ISDATE, esto te retornara verdadero o falso
> > > dependiendo de que si es una fecha o no.
> > >
> > > Saludos,
> > >
> > > Matias Iacono
> > > Microsoft MVP ASP/ASP.net - DC3
> > >
> >
> https://mvp.support.microsoft.com/profiležACEDFE-6C76-4156-ACE3-BD3E257868B7
> > > "Vrr" escribió en el mensaje
> > > news:
> > > > Hola a todos...
> > > >
> > > > Alguien sabe de alguna función en jscript que me indique si un valor
> > > > determinado es de tipo fecha?
> > > >
> > > > Tengo un formulario donde capturo fecha inicial y final y luego hago
> una
> > > > consulta donde el resultado está en ese rango de fechas... el problema
> > es
> > > que
> > > > si la fecha no es correcta, p.e. si pongo 31/02/2005 el sql me da un
> > error
> > > de
> > > > que el valor datetime está fuera del intervalo... es por esto que
> quiero
> > > > hacer la validación.
> > > >
> > > > Encontré una función pero está en vbscript y yo la necesito en
> > jscript
> > > o
> > > > la otra alternativa podría ser cómo llamar a una función vbscript
> desde
> > > una
> > > > jscript...
> > > >
> > > > Gracias.
> > >
> > >
> >
> >
>
>
>
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida