2016-05-01 92 views
0

我有一个领域对象“创建”,在其中创建对象的日期。现在我想跟踪‘多少个小时前’对象是使用moment.js创建。如何使用moment.js获得24小时内的日期之间的小时差?

我的目标是有时间显示如下面的例子

Created: 1hr ago 

Created: 5hrs ago 

Created: 9hrs ago 

Created: 12hrs ago 

Created: 14hrs ago 

Created: 18hrs ago 

Created: 24hrs ago 

一天24小时内一路

所以我试图与时刻:。

var $created = "2016-05-01T09:58:26.796Z"; 
    var $now = new Date(); 

    var $lastCreatedHour = moment(moment(moment().format('H')).diff(moment($created).format('H'))).format('H') + " hrs ago"; 

console.log("Created: " + $lastCreatedHour); 

我在这里的逻辑很简单,只是试图让当今时代小时和$创建小时之间的差异。

我实际上尝试了许多不同的东西,他们都不工作,要么他们是一个数字关闭,或他们不会在24小时内工作,只有在12小时内。

JSFIDDLE

我不和日期的帮助最好的感谢!

谢谢。

回答

1

如果你正在寻找任何时候都在个小时,然后从stdob--答案是罚款。

值得注意的是,瞬间内置了.fromNow()。简单地采取日期字符串为您建立项目时,传递的那一刻构造函数,调用该函数:

moment($created).fromNow(); 

作为一个实际的例子:

moment("2016-05-01T09:58:26.796Z").fromNow() 
"2 hours ago" 

,或者更长的时间前:

moment("2016-04-28T09:58:26.796Z").fromNow() 
"3 days ago" 

该功能将提供更多的用户友好输出,从'几秒前'到'x分钟前'到'y小时前',并进入数天,数月和数年。

fromNow的输出文本可以自定义。有关定制说明,请参阅http://momentjs.com/docs/#/displaying/fromnow/的基本文档和http://momentjs.com/docs/#/customization/relative-time/

作为最终的最佳实践注意事项,除非您有需要日期的第三方API,否则不应使用带有Moment.js的JavaScript Date对象。对于你正在做的事情,不需要日期。

+0

Wow Maggie这真棒,为我提供了一个更好的解决方案。我认为即使它不只是'小时',我也会实际回答你的答案。非常感谢Maggie分享这些信息 –

0

如果你不需要检查日期,这可能是你的问题的答案。另外,我想说,你的函数链不是必须的(如我已经说过的),这是你想要实现的。

我的结果是这样的:

var $created = moment("2016-04-30T00:58:26.796Z"); 
var $now = moment(); 
var $lastFeedHour = moment($now.diff($created)).hour(); 

console.log("Created: " + $lastFeedHour + " hrs ago"); 

你也可以检查一下生活here

+0

这不适合我的情况。感谢分享! –

0
var $created = "2016-04-30T10:58:26.796Z"; 
var $now = "2016-05-01T10:58:26.696Z"; 
var $lastFeedHour = moment(moment().diff(moment($created))).format('H'); 

console.log("Created: " + $lastFeedHour + " hrs ago"); 

JS Fiddle

+0

如果时间超过12小时,此解决方案不起作用,给出错误的小时。感谢你的分享! –

2
var $lastFeedHour = $now.diff($created, 'hours', true) + " hrs ago"; 

[https://jsfiddle.net/bjdtkfLs/]

[http://momentjs.com/docs/#/displaying/difference/]

+0

嘿,非常感谢你的帮助,这个解决方案效果很好,除了第三个参数需要是错误的。无论如何,只有我带着Maggies回答的原因是因为它在所有使用moment.js的情况下都是一个更好的解决方案。但就像我说你的解决方案为'小时'工作。谢谢你的分享,真的很感激! –

相关问题