Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rockrgo

Calcular intervalo entre duas datas

Recommended Posts

Boa tarde pessoal,

 

Não manjo muito de javascript, principalmente se tratando da classe Date.

 

Preciso calcular um intervalo entre duas datas. Tenho o seguinte código que peguei em um site.

function diasDecorridos(dt1, dt2){
    // variáveis auxiliares
    var minuto = 60000; 
    var dia = minuto * 60 * 24;
    var horarioVerao = 0;
    
    // ajusta o horario de cada objeto Date
    dt1.setHours(0);
    dt1.setMinutes(0);
    dt1.setSeconds(0);
    dt2.setHours(0);
    dt2.setMinutes(0);
    dt2.setSeconds(0);
    
    // determina o fuso horário de cada objeto Date
    var fh1 = dt1.getTimezoneOffset();
    var fh2 = dt2.getTimezoneOffset(); 

    // retira a diferença do horário de verão
    if(dt2 > dt1){
      horarioVerao = (fh2 - fh1) * minuto;
    } 
    else{
      horarioVerao = (fh1 - fh2) * minuto;    
    }

    var dif = Math.abs(dt2.getTime() - dt1.getTime()) - horarioVerao;
    return Math.ceil(dif / dia);
}

Porém este código está com um bug quando tento calcular a diferença entre um mês e outro.

Exemplo:

 

Escolho 01/10/14 e 02/10/14 o resultado do intervalo é de 1 dia. Este está correto.

 

Escolho 30/09/14 e 01/10/14 o resultado do intervalo é de 2 dias. Este está incorreto pois o mês 9 tem 30 dias e não 31.

 

Tentei identificar algo de errado mas até agora não encontrei. Se puderem ajudar fico grato.

 

Valeu!

 

 

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal resolvido utilizando o plugin moment.js

http://momentjs.com/

 

ficou desta forma.

function calculaDias(date1, date2){
        //formato do brasil 'pt-br'
        moment.locale('pt-br');
        //setando data1
        var data1 = moment(date1,'DD/MM/YYYY');
        //setando data2
        var data2 = moment(date2,'DD/MM/YYYY');
        //tirando a diferenca da data2 - data1 em dias
        var diff  = data2.diff(data1, 'days');
        
        return diff;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.