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

标签 javascript angularjs date time momentjs

我有一个对象,其字段为“创建”,并带有创建该对象的日期。现在我想跟踪使用 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 小时之间的差异强>.

我实际上尝试了很多不同的方法,但没有一个有效,要么是数量不足,要么在一天 24 小时内且仅在 12 小时内无法工作。

JSFIDDLE

我在日期方面不是最好的,感谢您的帮助!

谢谢。

最佳答案

如果您正在寻找所有以小时为单位的时间,那么 stdob-- 的答案就很好。

值得注意的是,Moment 内置了 .fromNow()。只需获取创建项目的日期字符串,将其传递给 moment 构造函数,然后调用该函数:

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,否则没有必要将 javascript Date 对象与 Moment.js 一起使用。对于您正在做的事情,不需要日期。

关于javascript - 如何使用 moment.js 获取 24 小时内日期之间的小时差?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36965645/

相关文章:

javascript - 查看 Node.js 代码

javascript - Visual Studio 2015 中的 AngularJS 智能感知

javascript - 如何比较两种不同格式的javascript日期?

r - 修改 R 中 x 轴上的日期格式?

JavaScript 日期() : How to convert the local date to GMT

javascript - 不自动更改背景图像jquery

javascript - 函数代码体和它的原型(prototype)之间有什么关系吗?

javascript - 在javascript中查找字符串中存在哪些子字符串的最快方法是什么?

angularjs - 为什么我收到错误...意外请求 : GET/internalapi/quotes

javascript - 所有资源解析后如何执行函数?