Comparando Datas com JavaScript

Agência OFF, desenvolvimento de soluções web para as Agências Digitais

<script language="javascript">
function checarDatas(){
    var NomeForm = document.Formulario;

    var data_1 = NomeForm.data_01.value;
    var data_2 = NomeForm.data_02.value;
    var Compara01 = parseInt(data_1.split("/")[2].toString() + data_1.split("/")[1].toString() + data_1.split("/")[0].toString());
    var Compara02 = parseInt(data_2.split("/")[2].toString() + data_2.split("/")[1].toString() + data_2.split("/")[0].toString());

    if (Compara01 > Compara02) {
        document.getElementById("resultado").innerHTML = "Data do Campo 01 Maior";
    }
    else {
          document.getElementById("resultado").innerHTML = "Data do Campo 01 Menor";
    }
    return false;
}
</script>
<div id="resultado"></div>
<form method="post" action="Teste.pl" name="Formulario" onsubmit="return checarDatas()">
    campo01: <input type="text" id="data_01" /><br />
    campo02: <input type="text" id="data_02" />
<input type="submit" />
</form>

 

Acesse também a Webly

Agência OFF, desenvolvimento de soluções web para as Agências Digitais


3 Respostas para Comparando Datas com JavaScript

  1. Muito bom o codigo, me ajudou muito. Obrigado

  2. Maneira mais adequada do que ficar somando, constante no W3C School:

    function comparaDatas(dataini, datafim) {

    var data1 = new Date();
    var data2 = new Date();

    data1.setTime(Date.parse(dataini.split(“/”).reverse().join(“/”))).setFullYear;
    data2.setTime(Date.parse(datafim.split(“/”).reverse().join(“/”))).setFullYear;

    if (data2 > data1)
    return (true);
    else
    return (false);
    }

  3. Essa rotina só funciona corretamente para datas com o mesmo mês e ano.
    Um exemplo simples:
    data1: 01/01/2001 -> soma: 2003
    data2: 31/12/2000 -> soma: 2043
    A rotina retornaria a data2 como sendo a maior, quando, na verdade, a data1 é a maior.

    Para resolver esse problema, eu utilizei o seguinte algorítimo:

    //Compara duas datas no formato dd/mm/aaaa retornando a maior delas
    function comparaDatas(data1, data2)
    {
    array1 = data1.toString().split(“/”);
    array2 = data2.toString().split(“/”);

    if( (array2[2] > array1[2]) || ((array2[2] == array1[2]) && (array2[1] > array1[1])) || ((array2[2] == array1[2]) && (array2[1] == array1[1]) && (array2[0] > array1[0])) )
    {
    return data2;
    }
    return data1;
    }

    Espero que ajude.

Deixe seu Comentário