8

Having some issues with calculating a date time range. What im trying to accomplish is to have moment provide me the difference in hours.

For example, here is my script:

    var startTime = $('2016-02-21 18:00');
    var endTime = $('2016-02-21 19:30');
    var hours = moment(endTime, 'YYYY/MM/DD HH:mm').diff(moment(startTime, 'YYYY/MM/DD HH:mm')).duration().asHours();
console.log(hours);

I am expecting that my console.log(hours) returns something like 1.5 (estimated in hours). But instead it's returning this error:

Uncaught TypeError: moment(...).diff(...).duration is not a function
    at <anonymous>:5:90
    at Object.InjectedScript._evaluateOn (<anonymous>:895:140)
    at Object.InjectedScript._evaluateAndWrap (<anonymous>:828:34)
    at Object.InjectedScript.evaluate (<anonymous>:694:21)

Would anyone have any ideas?

Heres a full example here https://jsfiddle.net/ewmq6sof/.

Daniel Ellison
  • 1,339
  • 4
  • 27
  • 49
  • 1
    Possible duplicate of [Get hours difference between two dates in Moment Js](http://stackoverflow.com/questions/25150570/get-hours-difference-between-two-dates-in-moment-js) – Ben Feb 21 '16 at 23:12

3 Answers3

17

You need to wrap the difference in the duration:

var startTime = '2016-02-21 18:00';
var endTime = '2016-02-21 19:30';
var hours = moment
        .duration(moment(endTime, 'YYYY/MM/DD HH:mm')
        .diff(moment(startTime, 'YYYY/MM/DD HH:mm'))
        ).asHours();
console.log(hours); // 1.5
baao
  • 71,625
  • 17
  • 143
  • 203
6

This is a bit more succinct than the accepted answer:

const startTime = moment('2016-02-21 18:00', 'YYYY/MM/DD HH:mm');
const endTime = moment('2016-02-21 19:30', 'YYYY/MM/DD HH:mm');

const hoursDiff = endTime.diff(startTime, 'hours', true);

console.log(hoursDiff); // 1.5
PaulMest
  • 12,925
  • 7
  • 53
  • 50
0

You just need to use the date.diff() method in moment.js

const now = moment.utc();
var end = moment("2022-11-08"); 
var hours = now.diff(end, "hours"); 
console.log(hours)
<script src="https://momentjs.com/downloads/moment.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>