Formatting MomentJS duration above 24 hours

a 夏天 提交于 2020-04-10 07:46:31

问题


I would like to format a summed up total working hours e.g. 49.75 to this: 49:45.

When I use duration like this:

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

I'll receive 01:45:00 instead of 49:45:00

Is there a way to format (instead of HH) duration without dropping the days?


回答1:


I recommend you this answer.

You can add a format for the duration, and it works for greater than 24 Hour.

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

I hope it can help you!

EDIT:

This code uses duration-format plugin!




回答2:


I think you cannot use format but build it manually:

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

Fiddle


Hope someone will find more elegant way



来源:https://stackoverflow.com/questions/45629183/formatting-momentjs-duration-above-24-hours

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!