是否有任何方法我可以使用moment.js格式方法持续时间对象?我在文档中找不到它,也没有看到它是持续时间对象的属性。

我希望能够做到以下几点:

var diff = moment(end).unix() - moment(start).unix();
moment.duration(diff).format('hh:mm:ss')

此外,如果有其他库可以轻松地容纳这种功能,我会很有兴趣推荐。

谢谢!


当前回答

如果diff是一瞬间

var diff = moment(20111031) - moment(20111010);
var formated1 = moment(diff).format("hh:mm:ss");
console.log("format 1: "+formated1);

其他回答

为了以这种格式显示工作时间,我需要这样做。 一开始我是这么做的。

moment.utc(totalMilliseconds).format("HH:mm:ss")

然而,任何超过24小时的时间都将重置为0。 但是分和秒是准确的。 所以我只用这部分来表示分和秒。

var minutesSeconds = moment.utc(totalMilliseconds).format("mm:ss")

现在我只需要总时间。

var hours = moment.duration(totalMilliseconds).asHours().toFixed()

为了得到我们都想要的格式,我们只需要把它们粘在一起。

var formatted = hours + ":" + minutesSeconds

如果totalMilliseconds是894600000,这将返回249:30:00。

希望这有帮助。请在评论中留下任何问题。;)

你不需要.format。像这样使用持续时间:

const duration = moment.duration(83, 'seconds');
console.log(duration.minutes() + ':' +duration.seconds());
// output: 1:23

我在这里找到了这个解决方案:https://github.com/moment/moment/issues/463

编辑:

用秒、分和小时填充:

const withPadding = (duration) => {
    if (duration.asDays() > 0) {
        return 'at least one day';
    } else {
        return [
            ('0' + duration.hours()).slice(-2),
            ('0' + duration.minutes()).slice(-2),
            ('0' + duration.seconds()).slice(-2),
        ].join(':')
    }
}

withPadding(moment.duration(83, 'seconds'))
// 00:01:23

withPadding(moment.duration(6048000, 'seconds'))
// at least one day
// set up
let start = moment("2018-05-16 12:00:00"); // some random moment in time (in ms)
let end = moment("2018-05-16 12:22:00"); // some random moment after start (in ms)
let diff = end.diff(start);

// execution
let f = moment.utc(diff.asMilliseconds()).format("HH:mm:ss.SSS");
alert(f);

看看JSFiddle

使用这行代码:

moment.utc(moment.duration(4500, "seconds").asMilliseconds()).format("HH:mm:ss")

Moment.duration (x).format()已弃用。 您可以使用moment.utc(4366589).format("HH:mm:ss")来获得所需的响应。

console.log (moment.utc (4366589) .format (HH: mm: ss)) < script src = " https://momentjs.com/downloads/moment.js " > < /脚本> < script src = " https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js " > < /脚本>