2011-12-21 4 views
0

Я написал JavaScript, чтобы рассчитать разницу между двумя датами, из потока twitter, а затем приравнять это к определенному значению - например, «Секунды назад», «x дней» назад .....Расчет количества времени, прошедшего между 2 датами

Я создал скрипку здесь, который демонстрирует, что я сделал: http://jsfiddle.net/meAEe/3/

Однако результат всегда равен "0 дней назад.

Может ли кто-нибудь помочь мне разобраться, почему?

+3

Просим опубликовать свой код в вопрос. –

ответ

2

Вам необходимо установить else между любыми операциями if.

В настоящее время он будет входить в каждое заявление if, соответствующее первому совпадению. Если время меньше часа, это также меньше двух часов, меньше, чем за день, менее двух дней и менее чем за год. Каждый из них заменит предыдущий, поэтому вы увидите только последний.

0

Почему бы вам не использовать плагин? Есть множество из них, написанных на JavaScript. Вот сладкий, написанный с помощью jQuery.

http://timeago.yarp.com/

+0

«в jQuery» - обратите внимание, что jQuery не является языком программирования. – pimvdb

+0

Я отредактировал, чтобы отразить ваш комментарий @pimvdb – Filip

1

У вас есть логическая ошибка в коде. Последняя инструкция if всегда будет выполняться, потому что вы не подключили свои операторы if, используя else if, что приведет к выкидыванию программы после того, как будет выполнено одно из условий.

0

Вам необходимо забрать if s до else if (кроме первого, конечно). Сейчас их все оценивают каждый раз.

0

Помимо некоторых деталей программирования, ваша проблема заключается в использовании функции Math.floor.

По: http://www.w3schools.com/jsref/jsref_floor.asp

Math.floor фактически возвращает ближайшее целое число , который в данном случае является 0, так как результаты 0.75.

0

Это потому, что вы делаете это: Math.floor(diff/day); Результат diff/day является 0.75. Если вы закончите это, это 0. Если вы измените дату, вы увидите, что ваш код работает нормально.

1

Ваш код работает нормально. Если вы посмотрите на свой код

    var rightNow = new Date("Wed, 21 Dec 2011 13:05:09 +0000"); 
       var then = new Date("Tue, 20 Dec 2011 19:05:09 +0000"); 

разница составляет менее 24 часов и дает 0 дней.

Я поставил

var then = new Date("Mon, 19 Dec 2011 19:05:09 +0000"); 

Он дал 1 день назад

+0

Результат правильный, но это не желаемый результат. Если разница меньше целого дня, она должна отображаться с более низким разрешением, например, часы или минуты. – Guffa

Смежные вопросы