Javascript Unix Epoch Time Странность - PullRequest
0 голосов
/ 23 апреля 2009

У меня есть часть скрипта, которая вычисляет дни, оставшиеся до события:

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;

Первая строка получает текущее время эпохи Unix и сбрасывает миллисекунды. Вторая строка получает дату будущего события из XML-канала. Если я поместил оба раза в онлайн-калькулятор Epoch, я получу правильную дату для currTime и dispDate. Но когда я делю их на дни (третья строка), конечный результат отключается более чем на 30 дней, что требует использования последней строки для получения правильного количества дней.

Теперь это достаточно странно. Но происходит что-то еще, что я не могу понять. Раньше он был выключен на 31 день, и теперь это неправильно, поэтому я изменил сценарий на 30 дней, и это правильно.

Кто-нибудь может указать, что я делаю не так? Я не могу понять, почему это происходит, и я бы предпочел не менять его.

Ответы [ 2 ]

1 голос
/ 23 апреля 2009

На первый взгляд код выглядит нормально.

Попробуйте вывести значения currTime и dispDate перед выполнением вычитания и посмотрите, соответствуют ли они.

Ошибка, о которой вы сообщаете, указывает на ошибку в единичной части кода где-то за месяц. Этот месяц длится 30 дней, а последний месяц длился 31 день. Вероятное местонахождение ошибки находится в пределах вызова event.find('UnixEpoch').

0 голосов
/ 23 апреля 2009

Дата события обрабатывается другим Javascript? Если вы используете формат new Date(year, month, day, etc...), месяц начинается с нуля, что легко забыть.

...