2011-12-21 151 views
0

我已经编写了一些JavaScript来计算两个日期之间的差异,然后将其等同于特定的值 - 例如'Seconds ago','x days前” .....计算两个日期之间传递的时间量

我创建了一个小提琴这里展示我做了什么:http://jsfiddle.net/meAEe/3/

但是结果总是等于‘0天前’。

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

+3

请张贴的问题在您的代码。 –

回答

2

您需要每个if语句之间的else

现在它将进入每个if声明后的第一个匹配。如果时间少于一个小时,它也少于两小时,少于一天,少于两天,少于一年。每个人都会替换上一个,所以你只能看到最后一个。

0

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

http://timeago.yarp.com/

+0

“在jQuery中” - 请注意,jQuery不是一种编程语言。 – pimvdb

+0

我会编辑以反映您的意见@pimvdb – Filip

1

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

0

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

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

相关问题