我可以使用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]);
}
我知道这个问题已经回答了,但如果你想要递归的更通用的东西,不依赖于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]);
}
有一个叫做fromNow()的很棒的moment方法,它会以人类可读的形式返回特定时间的时间,就像这样:
moment('2019-04-30T07:30:53.000Z').fromNow() // an hour ago || a day ago || 10 days ago
或者如果你想在两个特定的日期之间,你可以使用:
var a = moment([2007, 0, 28]);
var b = moment([2007, 0, 29]);
a.from(b); // "a day ago"
摘自文档:
都可以()
从()