Home Assistant Fácil

Curso de Home Assistant y domótica

  • Blog
  • Soy un pardillo
  • Podcast
  • Curso Arduino
  • Curso Domótica
  • Acceder
Usted está aquí: Inicio / Tutoriales / Fragmentos / JavaScript / Comparar fechas en JavaScript

Comparar fechas en JavaScript

Comentarios(2)
Luis del Valle Hernández

Unos de los errores más comunes que he visto en Javascript es tratar una fecha como una cadena de caracteres. Por eso os presentamos este fragmento de código donde veremos cómo comparar fechas en JavaScript. Recordamos, primero que javascript es un lenguaje no tipado, las variables no tienen tipo y lo más importante que se suele olvidar, es un lenguaje orientado a objetos, no del mismo modo que C++ o Java, los objetos son métodos y propiedades. Y entre muchos objetos propios del lenguaje tenemos el objeto fecha:

var Fecha = new Date();

Os dejo el enlace de la w3c sobre este objeto para profundizar más en el si queréis.

Así es que cuando nos planteamos en comparar dos fechas, tenemos que tener en cuenta estas premisas y convertir la cadena fecha en un objeto.

Planteo el siguiente problema, un usuario mete por formulario una fecha y por JavaScript tenemos que comprobar si la fecha es anterior o posterior a la fecha de hoy. Partimos de un HMTL simple, un formulario con un campo para meter la fecha y un botón para enviar el formulario.

<html>
    <head>
        <title>Comparacion Fechas JS</title>
        <script type="text/javascript" src="script.js"></script>
    </head>
    <body>
        <form id="Formulario" onSubmit="CompararFechas()">
            <table>
                <tr>
                    <th align="left">Introduce Fecha:</th>
                    <th><input id="Fecha" type="text"></input></th>
                    <th><input type="submit" value="Enviar"></input></th>
                </tr>
            </table>	
        </form>
    </body>
</html>

En nuestra función JS, lo primero que debemos hacer es convertir la cadena según el formato esperado (en este caso DD/MM/YYYY) convirtiéndola en un objeto Date y comprobamos si es una fecha correcta. Lo haríamos con las siguientes líneas:

function CompararFechas()
{
	//Comprobamos que tenga formato correcto
	var Fecha_aux = document.getElementById("Fecha").value.split("/");
 	var Fecha1 = new Date(parseInt(fecha_aux[2]),parseInt(fecha_aux[1]-1),parseInt(fecha_aux[0]));

 	//Comprobamos si existe la fecha
	if (isNaN(Fecha1)){
		alert("Fecha introducida incorrecta");
		return false;
	}
	else{
		alert("La fecha que has introducido es "+Fecha1);
	}
}

Como vemos, primero obtenemos los tres campos que forman la fecha separados por la barra / y con los datos obtenidos creamos un objeto Date. Después comprobamos si es una fecha correcta y si no lo es se lo indicamos al usuario y no continúa la función.

fecha_js1

Si la fecha es correcta le mostramos la fecha que ha insertado:

fecha_js2

Fijaros que muestra muchos más datos que los que hemos insertado, todos de los que se compone el objeto Date que hemos creado.

Si la fecha es correcta el proceso continua y pasamos a comparar la fecha introducida con la fecha actual del sistema:

Hoy = new Date();//Fecha actual del sistema

if (Fecha1 < Hoy){
    alert ("La fecha introducida es anterior a Hoy");
}
else{
    if (Fecha1 == Hoy){
        alert ("Has introducido la fecha de Hoy");
    }
    else{
        alert ("La fecha introducida es posterior a Hoy");
    }
}

Si introducís en el formulario la misma fecha que tiene el sistema aparentemente fallara, ya que no os devolverá que has introducido la fecha de hoy. Esto es debido a que estais comparando objetos, y en esa comparación también estas comparando horas, minutos y segundos.

Para solucionar esto deberíamos cambiar el código para comparar año, mes y día. Hay múltiples opciones pero os pongo una sencilla para que se vea bien:

Hoy = new Date();//Fecha actual del sistema

var AnyoFecha = Fecha1.getFullYear();
var MesFecha = Fecha1.getMonth();
var DiaFecha = Fecha1.getDate();

var AnyoHoy = Hoy.getFullYear();
var MesHoy = Hoy.getMonth();
var DiaHoy = Hoy.getDate();

if (AnyoFecha < AnyoHoy){
    alert ("La fecha introducida es anterior a Hoy");
}
else{
    if (AnyoFecha == AnyoHoy && MesFecha < MesHoy){
        alert ("La fecha introducida es anterior a Hoy");			
    }
    else{
        if (AnyoFecha == AnyoHoy && MesFecha == MesHoy && DiaFecha < DiaHoy){
            alert ("La fecha introducida es anterior a Hoy");
        }
        else{
            if (AnyoFecha == AnyoHoy && MesFecha == MesHoy && DiaFecha == DiaHoy){
                 alert ("Has introducido la fecha de Hoy");
            }
            else{
                alert ("La fecha introducida es posterior a Hoy");
            }
        }
    }
}

Y a partir de aquí ya podéis operar con fechas lo que necesitéis.

home assistant 2026.7

Automatizaciones Home Assistant 2026.7: por fin hablan en humano

¿Cuántas veces te has sentado delante del ordenador para hacer una triste automatización y has acabado queriendo tirar el teclado por la ventana? Eso … [+ info...]

comparativa home assistant y homey

Comparativa Home Assistant y Homey: qué sistema domótico comprar

Comparativa Home Assistant y Homey: si estás pensando en montar una casa inteligente de verdad, tarde o temprano te vas a encontrar con esta duda. ¿Me … [+ info...]

camaras de seguridad para casa

Cámaras de seguridad para casa: 5 pilares para no caer en la trampa del Prime Day

Llevas semanas pensando en poner cámaras de seguridad para casa y llega el Prime Day. Entras en Amazon, buscas y aparecen miles de resultados: WiFi, … [+ info...]

Copyright © 2026 · Programar Fácil · Aviso legal

Utilizamos cookies para ofrecerte la mejor experiencia en nuestra web.

Puedes aprender más sobre qué cookies utilizamos o desactivarlas en los .

Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.

Cookies estrictamente necesarias

Las cookies estrictamente necesarias tiene que activarse siempre para que podamos guardar tus preferencias de ajustes de cookies.

Cookies de terceros

Esta web utiliza Google Tag Manager para recopilar información anónima tal como el número de visitantes del sitio, o las páginas más populares.

Dejar esta cookie activa nos permite mejorar nuestra web.