Moment JS - 计算2个日期之间的小时数

Dan*_*son 4 javascript jquery momentjs

在计算日期时间范围时遇到一些问题.我想要完成的是让时刻为我提供数小时的差异.

例如,这是我的脚本:

    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);
Run Code Online (Sandbox Code Playgroud)

我期待我的console.log(hours)回报像1.5(以小时计算).但相反,它返回此错误:

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)
Run Code Online (Sandbox Code Playgroud)

有人会有任何想法吗?

这是一个完整的例子https://jsfiddle.net/ewmq6sof/.

chr*_*con 11

你需要将difference 包装在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
Run Code Online (Sandbox Code Playgroud)


Pau*_*est 5

这比公认的答案更简洁:

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
Run Code Online (Sandbox Code Playgroud)