Obtenha horas de diferença entre duas datas no Moment Js

Eu sou capaz de obter a diferença entre duas datas usando MomentJs da seguinte forma:

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

No entanto, também quero exibir a hora quando aplicável (somente quando> = 60 minutos se passaram).

No entanto, quando tento recuperar as horas de duração usando o seguinte:

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

está retornando a hora atual e não o número de horas entre as duas datas.

Como consigo a diferença em horas entre dois momentos?

    Você estava perto. Você só precisa usar o método duration.asHours() (veja os documentos ).

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

    O bloco de códigos a seguir mostra como calcular a diferença no número de dias entre duas datas usando 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) 

    Ou você pode fazer simplesmente:

     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 

    docs: aqui

    Tudo o que você precisa fazer é passar hours como o segundo parâmetro para a function momentos diff.

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

    Documentos: https://momentjs.com/docs/#/displaying/difference/

    Exemplo:

     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`); 
      
     var __startTime = moment("2016-06-06T09:00").format(); var __endTime = moment("2016-06-06T21:00").format(); var __duration = moment.duration(moment(__endTime).diff(__startTime)); var __hours = __duration.asHours(); console.log(__hours); 
      var timecompare = { tstr: "", get: function (current_time, startTime, endTime) { this.tstr = ""; var s = current_time.split(":"), t1 = tm1.split(":"), t2 = tm2.split(":"), t1s = Number(t1[0]), t1d = Number(t1[1]), t2s = Number(t2[0]), t2d = Number(t2[1]); if (t1s < t2s) { this.t(t1s, t2s); } if (t1s > t2s) { this.t(t1s, 23); this.t(0, t2s); } var saat_dk = Number(s[1]); if (s[0] == tm1.substring(0, 2) && saat_dk >= t1d) return true; if (s[0] == tm2.substring(0, 2) && saat_dk < = t2d) return true; if (this.tstr.indexOf(s[0]) != 1 && this.tstr.indexOf(s[0]) != -1 && !(this.tstr.indexOf(s[0]) == this.tstr.length - 2)) return true; return false; }, t: function (ii, brk) { for (var i = 0; i <= 23; i++) { if (i < ii) continue; var s = (i < 10) ? "0" + i : i + ""; this.tstr += "," + s; if (brk == i) break; } }};