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

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

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

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

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

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

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


当前回答

也许对某人有用

          var ax = moment(
            new Date().toLocaleString(), // today/now is 09/12/2021 10:00:00
            "DD/MM/YYYY HH:mm:ss"
            ).diff(
              moment(
                "12/11/2022 13:43:11", // some time in future or past
                "DD/MM/YYYY HH:mm:ss"
              )
          );
          console.log('if today is in the future of the compared date then 
          result should be negative ==>', ax);
          // ax bigger than 0 zero means date in past. ms less than zero is in future

其他回答

你所需要做的就是把hours作为第二个参数传递给moments diff函数。

var a = moment([21,30,00], "HH:mm:ss")
var b = moment([09,30,00], "HH:mm:ss")
a.diff(b, 'hours') // 12

文档:https://momentjs.com/docs/ # / /显示/不同

例子:

const dateFormat = "YYYY-MM-DD HH:mm:ss"; // Get your start and end date/times const rightNow = moment().format(dateFormat); const thisTimeYesterday = moment().subtract(1, 'days').format(dateFormat); // pass in hours as the second parameter to the diff function const differenceInHours = moment(rightNow).diff(thisTimeYesterday, 'hours'); console.log(`${differenceInHours} hours have passed since this time yesterday`); <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.min.js"> </script>

或者你可以简单地做:

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

文档:

 var start=moment(1541243900000);
 var end=moment(1541243942882);
 var duration = moment.duration(end.diff(startTime));
 var hours = duration.asHours();

如您所见,开始日期和结束日期需要是此方法工作的时刻对象。

根据Moment JS的新Deprecation警告

你需要传递开始和结束日期格式的格式以及值,例如:

   let trackStartTime = "2020-12-29 09:59:19.07 +05:30";
   let trackEndTime = "2020-12-29 11:04:19.07 +05:30" || moment().format("YYYY-MM-DD HH:mm:ss.SS Z");
   let overallActivity = moment.duration(moment(trackEndTime, 'YYYY-MM-DD HH:mm:ss.SS Z').diff(moment(trackStartTime, 'YYYY-MM-DD HH:mm:ss.SS Z'))).asHours();

你很接近了。你只需要使用duration.asHours()方法(请参阅文档)。

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