我可以使用MomentJs得到两个日期之间的差异,如下所示:

moment(end.diff(startTime)).format("m[m] s[s]")

但是,我还想在适用的情况下显示小时(仅当>= 60分钟已经过时)。

然而,当我试图检索持续时间小时使用以下:

var duration = moment.duration(end.diff(startTime));
var hours = duration.hours();

它返回当前的小时数,而不是两个日期之间的小时数。

我如何得到两个时刻之间的小时差?


当前回答

我知道这很老了,但这里有一个简单的解决方案:

const hourDiff = start.diff(end, "hours");

开始和结束都是力矩对象。

享受吧!

其他回答

 calcDifferential(from, to) {
      const fromTime = this.$moment(from, 'hh:mm:ss')
      const toTime = this.$moment(to, 'hh:mm:ss')
      const ms = toTime.diff(fromTime)
      const d = this.$moment.duration(ms)
      const s = d.format()
      return s
    }

就我而言,我想要的是小时和分钟:

var duration = moment.duration(end.diff(startTime));
var hours = duration.hours(); //hours instead of asHours
var minutes = duration.minutes(); //minutes instead of asMinutes

更多信息请参考官方文档。

或者你可以简单地做:

var a = moment('2016-06-06T21:03:55');//now
var b = moment('2016-05-06T20:03:55');

console.log(a.diff(b, 'minutes')) // 44700
console.log(a.diff(b, 'hours')) // 745
console.log(a.diff(b, 'days')) // 31
console.log(a.diff(b, 'weeks')) // 4

文档:

有一个叫做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"

摘自文档:

都可以() 从()

下面的代码块展示了如何使用MomentJS计算两个日期之间的天数差异。

var now = moment(new Date()); //todays date
var end = moment("2015-12-1"); // another date
var duration = moment.duration(now.diff(end));
var days = duration.asDays();
console.log(days)