计算两个日期之间经过的时间

时间:2011-12-21 13:24:46

标签: javascript jquery

我已经编写了一些JavaScript来计算两个日期之间的差异,从twitter流中,然后将其等同于特定值 - 例如'Seconds ago','x days ago'..... p>

我在这里创建了一个小提琴,演示了我所做的:http://jsfiddle.net/meAEe/3/

但结果总是等于'0天前'。

任何人都可以帮我找出原因吗?

7 个答案:

答案 0 :(得分:2)

每个else语句之间需要if

现在它会在匹配的第一个语句之后进入每个if语句。如果时间不到一小时,也不到两小时,不到一天,不到两天,不到一年。每一个都将替换前一个,所以你只看到最后一个。

答案 1 :(得分:1)

您的代码中存在逻辑错误。最后一个if语句将始终执行,因为您没有使用else if连接if语句,这将导致程序执行在其中一个条件匹配时丢失。

答案 2 :(得分: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天前

答案 3 :(得分:0)

为什么不使用插件?有很多用JavaScript编写的。这是一个用jQuery编写的甜蜜文章。

http://timeago.yarp.com/

答案 4 :(得分:0)

您需要将if更改为else if s(当然除了第一个)。现在他们每次都被评估。

答案 5 :(得分:0)

除了一些编程细节之外,您的问题在于使用Math.floor函数。

根据:http://www.w3schools.com/jsref/jsref_floor.asp

Math.floor实际上返回最近的整数,在本例中为0,因为结果为0.75。

答案 6 :(得分:0)

那是因为你这样做:Math.floor(diff / day); diff / day的结果是0.75。如果你向下舍入,那就是0。如果您更改日期,您会发现您的代码运行正常。