繁体   English   中英

如何使用moment.js获取24小时内日期之间的时差?

[英]How can I get the hour difference between dates within 24 hours with moment.js?

我有一个对象,其字段为“创建”,其创建日期为创建日期。现在,我想跟踪使用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);

我的逻辑很简单,只是尝试获取当前时间hour$ created hour之间差。

我实际上尝试了许多不同的方法,但是它们都不起作用,或者是数量不多,或者它们将不会在24小时之内且仅在12小时之内起作用。

JSFIDDLE

我不是最好的日期帮助表示赞赏!

谢谢。

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

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

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

如果您希望所有时间都在几小时内,那么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分钟前”再到“ y小时前”,再到几天,几个月和几年。

fromNow的输出文本可以自定义。 http://momentjs.com/docs/#/displaying/fromnow/的基本文件和http://momentjs.com/docs/#/customization/relative-time/定制指令。

作为最后的最佳实践注释,除非您有需要日期的第三方API,否则永远不需要在Moment.js中使用javascript Date对象。 对于您正在执行的操作,不需要日期。

如果您也不需要检查日期,这可能是您问题的答案。 另外,我想说的是,如果要实现此功能,则不必(如我已经说过的那样)进行函数链接。

我的结果看起来像这样:

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");

您也可以在此处实时查看

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小提琴

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM