entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Comparar fechas con JavaScript en HTML

Tengo dos input con id=inp1 y id=inp2 respectivamente. Ambos recibiran fechas. Lo que necesito es comprobar que la fecha ingresada en el input con id=inp2, no sea menor que el input con id=inp1. Porque <input id="inp1"> es fecha inicial y <input id="inp2"> es fecha final.
Como hago dicha comprobacion y denegar que el usuario inserte una fecha final menor a la inicial...?

1 Respuesta

1voto

Leonardo-Tadei Puntos227320

Hola @ibrames,

la comparación depende el formato en que esté ingresada la fecha, en el sentido que no es lo mismo dd/mm/yyyy que d/m/yy que yy-mm-dd etc

Una forma simple de hacerlo es cambiar el formato que sea que recibas como entrada a yyyymmdd ya que de esta forma el orden cronológico coincide con el orden natural de los números y con el orden alfabético, con lo que la comparación es trivial.

Si tu formato de entrada es dd/mm/yyyy podrías hacer:

// pasa los inputo a variables para manejarlos más cómodamente
inp1 = document.getElementById('inp1').value;
inp2 = document.getElementById('inp2').value;
// convierte las fechas a yyyymmdd
tmp = inp1.split('/');
fini = tmp[2]+tmp[1]+tmp[0];
tmp = inp2.split('/');
ffin = tmp[2]+tmp[1]+tmp[0];
// la comparación
if(fini > ffin){
   console.log('error, la fecha inicial es mayor que la fecha final');
}

Después se puede mejorar esto poniendo la conversión en una función, validando que la entrada tenga el formato adecuado, creando una función que reciba las 2 fechas y devuelva verdadero o falso, etc.

Perdón si hay algún error de sintaxis: escribí el código directamente acá... pero la idea es esa.

Saludos

0voto

ibrames comentado

Muchas gracias Leonardo-Tadei. Bueno mi formato de fecha es yyyy/mm/dd... cómo lo haría?

0voto

Peter comentado

ibrames, moví tu respuesta a comentario.

Saludos.

0voto

Leonardo-Tadei comentado

Para el formato yyyy/mm/dd no tenés que hacer nada, porque como te decía al proncipio el orden cronológico coincide con el alfabético...

Simplemente:

// pasa los input a variables para manejarlos más cómodamente
inp1 = document.getElementById('inp1').value;
inp2 = document.getElementById('inp2').value;
if(inp1 > inp2){
   console.log('error, la fecha inicial es mayor que la fecha final');
}

0voto

ibrames comentado

Mi html tiene un calendario que cuando se clickea un día, la fecha aparece en el input con id=inp2. Cómo hago para ejecutar la función de javascript cuando la fecha aparezca en dicho input?.... muchas gracias.

0voto

white comentado

Depende de la libreria que uses como Jquery UI, etc. puedes hacer uso del callback/evento del datepicker que tengas, pero generalmente vienen con esta opcion. http://jqueryui.com/datepicker/#min-max

0voto

Leonardo-Tadei comentado

Te sugiero @ibrames que para la cuestión de hacer aparecer el calendario crees una nueva pregunta y pongas ahí el código JavaScript necesario para entender cómo funciona y poder ayudarte.

Como bien dice @white, esto depende del código que uses para implemetnar el calendario...

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta