Problemas com datas javaScript

1 resposta
B

Pessoal Boa Tarde
Desculpem fazer esse tipo de pergunta pelo GUJ , porem na empresa não tenho acesso a outros forúns para fazer perguntas sobre javaScript

Tenho uma função que cálcula a diferença de dias entre 2 datas em java Script.

Até ai tudo bem o problema é que este função para um dia específico da um erro no claculo informa um dia a mais.
A função não da um valor float que poderia ter sido arredondado para mais ou para menos ela da um valor exato para qualquer caso.

O dia que eu tenho o problema é 01/12/2011

Eu calculo a diferenca entre 17/08/2011 e 30/11/2011 e da 13 dias (OK Resusltado correto)
Se calcular a diferenca entre 17/08/2011 e 01/12/2011 (um dia a mais) o js me retorna 15 dias.
Alguem sabe o porque.

já tentei fazer parse para int diminuir sem pegar o get time e para todos os casos no dia 01/12/2011 me retorna diferença de 15 dias.

Segue o código

function calculaAtraso(){
if(document.forms[0].DataPagto != null){
if(document.forms[0].DataPagto.length > 1){
for (var i=0; i<document.forms[0].DataPagto.length; i++) {
if(document.forms[0].DataPagto[i].value!=""){

 valor = document.forms[0].DataVcto[i].value
 campos=valor.split("/")

 firstdate =new Date(campos[2],campos[1],campos[0])

 valor = document.forms[0].DataPagto[i].value
 campos=valor.split("/")
 seconddate =new Date(campos[2],campos[1],campos[0])

 msPerDay = 24 * 60 * 60 * 1000 // Number of milliseconds per day
 difference = seconddate.getTime() - firstdate.getTime()
 dbd= Math.floor((seconddate-firstdate)/ msPerDay)

 document.forms[0].Atraso[i].value=dbd.toString()
 }
 }
 }
 else{
 if(document.forms[0].DataPagto.value!=""){

 valor = document.forms[0].DataVcto.value
 campos=valor.split("/")
 firstdate = new Date(campos[2],campos[1],campos[0])

 valor = document.forms[0].DataPagto.value
 campos=valor.split("/")
 seconddate = new Date(campos[2],campos[1],campos[0])

 msPerDay = 24 * 60 * 60 * 1000 // Number of milliseconds per day
 difference = seconddate.getTime() - firstdate.getTime()
 dbd= Math.floor((seconddate-firstdate)/ msPerDay)

 document.forms[0].Atraso.value=dbd.toString()
 }
 }
 }
}

1 Resposta

B

[Meses em JavaScript]

Já foi resolvido o javaScript considera os meses como um array que começa em 0

Criado 1 de dezembro de 2011
Ultima resposta 1 de dez. de 2011
Respostas 1
Participantes 1