格式化MomentJS持续时间超过24小时

DoK*_*DoK 7 javascript momentjs

我想格式化总计工作时间,例如49.7549:45.

当我使用这样的持续时间:

const dur = moment.duration(49.75, 'hours').asMilliseconds();
moment.utc(dur).format("HH:mm:ss") // 01:45:00
Run Code Online (Sandbox Code Playgroud)

我会收到01:45:00而不是49:45:00

有没有办法在不减少日期的情况下格式化(而不是HH)持续时间?

Max*_*tin 8

我认为你不能使用格式,但手动构建它:

var dur = moment.duration(49.75, 'hours');
var hours = Math.floor(dur.asHours());
var mins  = Math.floor(dur.asMinutes()) - hours * 60;
var sec   = Math.floor(dur.asSeconds()) - hours * 60 * 60 - mins * 60;

var result = hours + ":" + mins + ":" + ((sec > 9) ? sec : ("0"+sec));
console.log(result); // 49:45:00
Run Code Online (Sandbox Code Playgroud)

Fiddle


希望有人能找到更优雅的方式


Lak*_*eri 5

我向您推荐这个答案

您可以添加持续时间的格式,并且其适用时间超过 24 小时。

function(input) {
    input = input || '';
    var out = '';
    var dur = moment.duration(input, 'minutes');
    return dur.format('HH:mm:ss');
};
Run Code Online (Sandbox Code Playgroud)

我希望它可以帮助你!

编辑:

此代码使用持续时间格式插件!

  • 对于 moment.duration() 没有格式函数。所以上面的代码根本不起作用。 (2认同)