我可以使用MomentJs得到两个日期之间的差异,如下所示:
moment(end.diff(startTime)).format("m[m] s[s]")
但是,我还想在适用的情况下显示小时(仅当>= 60分钟已经过时)。
然而,当我试图检索持续时间小时使用以下:
var duration = moment.duration(end.diff(startTime));
var hours = duration.hours();
它返回当前的小时数,而不是两个日期之间的小时数。
我如何得到两个时刻之间的小时差?
我知道这个问题已经回答了,但如果你想要递归的更通用的东西,不依赖于moment fromNow,你可以使用我创建的这个函数。当然,您可以根据需要更改其逻辑,使其支持年和秒。
var createdAt = moment('2019-05-13T14:23:00.607Z');
var expiresAt = moment('2019-05-14T14:23:00.563Z');
// You can also add years in the beginning of the array or seconds in its end
const UNITS = ["months", "weeks", "days", "hours", "minutes"]
function getValidFor (createdAt, expiresAt, unit = 'months') {
const validForUnit = expiresAt.diff(createdAt, unit);
// you could adjust the if to your needs
if (validForUnit > 1 || unit === "minutes") {
return [validForUnit, unit];
}
return getValidFor(createdAt, expiresAt, UNITS[UNITS.indexOf(unit) + 1]);
}