2017-08-11 100 views
3

我想要格式化总工作时间, 49.75对此:49:45格式化MomentJS持续时间超过24小时

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

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

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

有没有办法来格式化(而不是HH)持续时间没有下降的日子?

+1

正如你在例子中看到的,我使用了moment.duration到目前为止。缺少的是一个适当的格式化函数或者至少一个JS插件 – DoK

回答

3

我建议你这个answer

您可以添加一个持续时间的格式,并且它的工作时间大于24小时。

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

我希望它能帮助你!

编辑:

该代码使用duration-format插件!

+0

对于moment.duration(),没有格式功能。所以上面的代码根本不起作用。 – DoK

+0

它只是一段代码,你检查我连接的整个答案吗? – LakiGeri

+0

上面的代码依赖于来自[jsmreese](https://github.com/jsmreese/moment-duration-format)的插件,并没有在它自己的工作。在你的答案中突出显示这将是一件好事。 – DoK

4

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

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


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

+0

您的解决方案是迄今为止我所拥有的。我认为有一个格式化函数可以构建到momentJS中,或者至少有一个JJ插件。 – DoK