Sep 19

Comparando datas com JavaScript

<script language="javascript">
    /*
    Autor.......: Kenneth R. B. Carletto
    Contato.....: MSN(keno_brow@msn.com) E-Mail(chorao.info@gmail.com)
    Data........: 20/08/07
    Finalidade..: Função que retorna qual das duas datas (passadas como parametro)
                  é maior, baseada no objeto Date e sua funcao getTime();
    */
 
    // gE('idElemento'): Simplesmente retorna uma referencia ao objeto 'idElemento'
    function gE(idElemento){
        return document.getElementById(idElemento);
    }
 
    function dataMaior(dt1,dt2){
        // dt1 e dt2: Devem ser tipo String, para evitar confusao de tipos
        if(typeof dt1 != "string" ||
           typeof dt2 != "string"){
            alert("As datas devem ser passadas como strings");
            return false;
        }
 
        // dt1 e dt2: Alem de strings, dt1 e dt2 devem obedecer aos formatos de data do Brasil (dd/mm/aa ou dd/mm/aaaa)
        padrao = /d{2}/d{2}/(?:d{2}|d{4})/;
        if(!padrao.test(dt1) ||
           !padrao.test(dt2)){
            alert("Formato de data invalido.nUtilize dd/mm/aa ou dd/mm/aaaa");
            return false;
        }
 
        // Instanciamos as datas, para poder usar getTime();
        data1 = new Date(dt1);
        data2 = new Date(dt2);
        if(!data1 || !data2){
            alert("Erro ao criar objetos");
            return false;
        }
 
        // milliSegundos1: irá conter a quantidade de segundos corridos desde 1/1/1970 0h ate dt1
        milliSegundos1 = data1.getTime();
        // milliSegundos2: irá conter a quantidade de segundos corridos desde 1/1/1970 0h ate dt2
        milliSegundos2 = data2.getTime();
 
        // Comparando millisegundos para retornar a conclusão de quem é maior que quem...
        if(milliSegundos1 == milliSegundos2){
            alert("As datas são iguais");
            return true;
        } else if(milliSegundos1 > milliSegundos2){
            alert("Data 1 maior que data 2");
            return true;
        } else if(milliSegundos1 < milliSegundos2){
            alert("Data 2 maior que data 1");
            return true;
        } else return false;
    }
</script>
<input name="tdt1" value="10/01/07" type="text" />
<input name="tdt2" value="10/02/07" type="text" />
<input value="Maior" onclick="dataMaior(gE('tdt1').value,gE('tdt2').value)" type="button" />
Share and Enjoy:
  • E-mail this story to a friend!
  • Print this article!
  • del.icio.us
  • Digg
  • Google
  • TwitThis
  • Facebook
  • Live
  • StumbleUpon

No Comment

  1. Hermano March 19th, 2008 5:21 pm

    Muito legal! Parabéns, você se garante em javascript!
    Obrigado.

  2. Vinicius Cordeiro March 19th, 2008 8:30 pm

    Mas não foi eu quem fiz… peguei em algum lugar e não lembro onde… ;)

Leave a comment