我想格式化总计工作时间,例如: 49.75 对此: 49:45 。
当我使用这样的持续时间时:
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 )持续时间?
答案 0 :(得分:7)
我认为您不能使用格式,而是手动构建它:
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
希望有人能找到更优雅的方式
答案 1 :(得分:1)
我建议您answer。
您可以添加持续时间的格式,并且工作时间超过24小时。
function(input) {
input = input || '';
var out = '';
var dur = moment.duration(input, 'minutes');
return dur.format('HH:mm:ss');
};
我希望它可以帮到你!
编辑:
此代码使用duration-format插件!
答案 2 :(得分:0)
如果您一次修改一秒钟,那么可以大大简化(解析和更新)。
从以下答案中获得灵感:https://stackoverflow.com/a/45629433/11121690
incrementTime: (sectionKey, itemKey) => {
const pad = (number) => `${number > 9 ? number : "0" + number}`;
const timeString = STATS_DATA_UTIL.getByParts(sectionKey, itemKey);
const parts = timeString.split(':');
let uiSecs = parseInt(parts[2]);
let uiMins = parseInt(parts[1]);
let uiHrs = parseInt(parts[0]);
uiSecs++;
if (uiSecs === 60) {
uiSecs = 0; uiMins++;
if (uiMins === 60) uiMins = 0; uiHrs++;
}
const result = `${pad(uiHrs)}:${pad(uiMins)}:${pad(uiSecs)}`;
STATS_DATA_UTIL.setByParts(sectionKey, itemKey, result);
},