none
Dúvida em Anos entre datas com Javascript RRS feed

  • Pergunta

  • Bom dia pessoal,

    Após pesquisar no Google, encontrei o código abaixo para calcular anos entre datas, porém não funciona como deveria. Fiz um teste com minha data de nascimento (17/10/1982) até o dia de hoje (26/05/2011) e deu 29.... mas teria que ter dado 28 porque só faço aniversário em Outubro, então pensei em subtrair 1 ano quando o mês de aniversário for maior que o mês atual, mas não consegui fazer em javascript... em ASP eu consigo, mas em javascript não.... segue abaixo o código...

    <script type="text/javascript">
    var dateDif = { 
     dateDiff: function(strDate1,strDate2){ 
     return (((Date.parse(strDate2))-(Date.parse(strDate1)))/(24*60*60*1000*365)).toFixed(0); 
     } 
    } 
     
    function anosEntreDatas(dataInicial, dataFinal) 
    { 
     var mes, dataAtual, dataInicial, arrDataInicial, novaDataInicial, anosEntreDatas; 
     mes = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"); 
     
     arrDataFinal = dataFinal.split('/'); 
     arrDataInicial = dataInicial.split('/'); 
     novaDataInicial = mes[(arrDataInicial[1] - 1)] + ' ' + arrDataInicial[0] + ' ' + arrDataInicial[2]; 
     novaDataFinal = mes[(arrDataFinal[1] - 1)] + ' ' + arrDataFinal[0] + ' ' + arrDataFinal[2]; 
     anosEntreDatas = dateDif.dateDiff(novaDataInicial, novaDataFinal); 
     
    
     alert(anosEntreDatas + " anos"); 
    } 
    </script> 
     
    <a href="#" onclick="anosEntreDatas('17/10/1982', '26/05/2011')">17/10/1982 à 26/05/2011</a>
    
    

    Fico no aguardo,

     


    Eder Pardeiro
    quinta-feira, 26 de maio de 2011 14:41

Todas as Respostas

  • Eder tudo bom?

    Segue a função que pode ser util, calcula diferenca entre dias, semanas, meses e anos em javascript.

    <script>
    var DateDiff = {
     
        inDays: function(d1, d2) {
            var t2 = d2.getTime();
            var t1 = d1.getTime();
     
            return parseInt((t2-t1)/(24*3600*1000));
        },
     
        inWeeks: function(d1, d2) {
            var t2 = d2.getTime();
            var t1 = d1.getTime();
     
            return parseInt((t2-t1)/(24*3600*1000*7));
        },
     
        inMonths: function(d1, d2) {
            var d1Y = d1.getFullYear();
            var d2Y = d2.getFullYear();
            var d1M = d1.getMonth();
            var d2M = d2.getMonth();
     
            return (d2M+12*d2Y)-(d1M+12*d1Y);
        },
     
        inYears: function(d1, d2) {
            return d2.getFullYear()-d1.getFullYear();
        }
    }
     
    var dString = "May, 17, 2000";
     
    var d1 = new Date(dString);
    var d2 = new Date();
     
    document.write("<br />Numeros de <b>dias</b> desde "+dString+": "+DateDiff.inDays(d1, d2));
    document.write("<br />Numeros de <b>semanas</b> desde "+dString+": "+DateDiff.inWeeks(d1, d2));
    document.write("<br />Numeros de <b>meses</b> desde "+dString+": "+DateDiff.inMonths(d1, d2));
    document.write("<br />Numeros de <b>anos</b> desde "+dString+": "+DateDiff.inYears(d1, d2));
    </script>

    Modifique para atender seus objetivos.

    abraços


    Rafael Boschini

    terça-feira, 21 de agosto de 2012 17:10