Javascript 如何使用Moment.js精确设置时间持续时间的格式?

Javascript 如何使用Moment.js精确设置时间持续时间的格式?,javascript,momentjs,Javascript,Momentjs,考虑到UTC格式中的两个日期,我希望执行以下操作: var start = "2014-01-13T06:00:00.0000000Z"; var end = "2014-01-13T14:16:04.0000000Z"; 我想得到这两次之间经过的确切时间跨度,例如 8h 16m 我已尝试使用以下方法: var duration = moment(moment(end) - moment(start)).format('hh[h] mm[m]'); 但这不适用于白天。此外,它不适用于天,因

考虑到UTC格式中的两个日期,我希望执行以下操作:

var start = "2014-01-13T06:00:00.0000000Z";
var end = "2014-01-13T14:16:04.0000000Z";
我想得到这两次之间经过的确切时间跨度,例如

8h 16m
我已尝试使用以下方法:

var duration = moment(moment(end) - moment(start)).format('hh[h] mm[m]');

但这不适用于白天。此外,它不适用于天,因为它们总是>=1,即使在moment.js中有一个用于格式化持续时间的插件:

如果它不能满足您的需要,那么您应该扩展
矩.duration.fn
。如果您不支持很多地区,那么应该很简单


在任何情况下,我建议您阅读本文的主题。

您可以尝试使用持续时间,但我不确定这些功能是否具有您想要的功能

此外,您还可以始终使用“时刻差”以毫秒为单位获取差值,然后根据需要对其进行格式化。这与您正在做的基本相同,但您只调用diff一次

function convertMilliSecondsIntoLegibleString(milliSecondsIn) {

    var secsIn = milliSecondsIn / 1000;
    var milliSecs = milliSecondsIn % 1000;

    var hours = secsIn / 3600,
    remainder = secsIn % 3600,
    minutes = remainder / 60,
    seconds = remainder % 60;


    return ( hours + "h: "
            +  minutes + "m: "
            + seconds +"s: " + milliSecs + "ms");
}

我将看看特性请求会发生什么。现在,这个插件满足了我的需求。
function convertMilliSecondsIntoLegibleString(milliSecondsIn) {

    var secsIn = milliSecondsIn / 1000;
    var milliSecs = milliSecondsIn % 1000;

    var hours = secsIn / 3600,
    remainder = secsIn % 3600,
    minutes = remainder / 60,
    seconds = remainder % 60;


    return ( hours + "h: "
            +  minutes + "m: "
            + seconds +"s: " + milliSecs + "ms");
}