我有一个"创建'领域的对象。以及创建对象的日期。现在我想跟踪"多少小时前"该对象是使用 moment.js 创建的。
我的目标是让时间显示如下例。
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);
我的逻辑很简单,只是尝试区分 当前时间 和 $ created hour
我实际上尝试了许多不同的东西,但是他们都没有工作,或者他们是一个数字关闭或他们不会在24小时内工作,只在12小时内。
我不是最好的日期帮助表示赞赏!
谢谢。
答案 0 :(得分:2)
var $lastFeedHour = $now.diff( $created, 'hours', true) + " hrs ago";
答案 1 :(得分:1)
如果你想要的时间都是几个小时,那么stdob的回答很好。
值得注意的是,Moment内置.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分钟前”再到“几小时前”,再到几天,几个月和几年。
fromNow的输出文本可以自定义。有关基本文档,请参阅http://momentjs.com/docs/#/displaying/fromnow/;有关自定义说明,请参阅http://momentjs.com/docs/#/customization/relative-time/。
作为最终的最佳实践说明,除非您拥有需要日期的第三方API,否则永远不必使用带有Moment.js的javascript Date对象。对于你正在做的事情,不需要日期。
答案 2 :(得分: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。
答案 3 :(得分: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");