Pergunta

Eu tenho uma parte do script que calcula os dias restantes para um evento:

var currTime = Math.round(new Date().getTime() / 1000.0);
var dispDate = event.find('UnixEpoch').text();
var diffDate = (dispDate - currTime) / 86400;
var dateRound = Math.round(diffDate) - 30;

A primeira linha recebe o atual tempo Unix Epoch e raspa os milissegundos. A segunda linha recebe o futuro data do evento a partir de um feed XML. Se eu colocar ambas as vezes em uma calculadora Epoch on-line, fico com a data correta para ambos currTime e dispDate. Mas quando eu dividi-los para baixo para dias (terceira linha), o resultado final é desativado por mais de 30 dias, exigindo que eu uso a última linha para obter o número certo de dias.

Agora, isso é o suficiente estranho. Mas há algo mais acontecendo que eu não consigo descobrir. É usado para estar fora por 31 dias, e agora que está errado, então eu alterou o script para 30 dias, o que é certo.

pode apontar ninguém o que estou fazendo de errado? Eu não posso para a vida de me descobrir por que isso está acontecendo, e eu prefiro não ter de manter aprimorando-o.

Foi útil?

Solução

Em face do que a aparência de código OK.

Tente despejar os valores de currTime e dispDate antes de fazer a subtração e ver se eles são consistentes.

O erro que você está relatando sugere um erro off-by-one na parte mês do algures código. Este mês é de 30 dias de duração, e no mês passado foi de 31 dias de duração. A localização provável do erro é dentro da chamada event.find('UnixEpoch').

Outras dicas

É a data do evento que está sendo processado por outro Javascript? Se você usar o formato new Date(year, month, day, etc...), mês é baseado em zero, o que é fácil de esquecer.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top