Je souhaite formater un total d'heures de travail résumées, par ex. 49,75 à ceci: 49:45 .

Quand j'utilise la durée comme ceci:

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

Je recevrai 01:45:00 au lieu de 49:45:00

Existe-t-il un moyen de formater la durée (au lieu de HH ) sans supprimer les jours?

10
DoK 11 août 2017 à 10:18

2 réponses

Meilleure réponse

Je vous recommande cette réponse.

Vous pouvez ajouter un format pour la durée et cela fonctionne pendant plus de 24 heures.

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

J'espère que cela peut vous aider!

MODIFIER:

Ce code utilise le plugin durée-format!

1
LakiGeri 14 août 2017 à 10:24

Je pense que vous ne pouvez pas utiliser le format mais le construire manuellement:

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


J'espère que quelqu'un trouvera une manière plus élégante

9
Maxim Shoustin 11 août 2017 à 07:43