如何使用Moment.js获得总小时HH:MM格式?

时间:2016-01-19 04:25:36

标签: javascript momentjs

我想使用Moment.js计算周总时间。请指教。 这是我到目前为止所尝试的:

<img onclick="addtoo(this)" src="http://lorempixel.com/200/200"/>

2 个答案:

答案 0 :(得分:4)

这是我在SO和moment.js文档的帮助下取得的成就。

var startTime = moment("06:10:00", 'hh:mm');
var endTime = moment("08:00:00", 'hh:mm');

var totalSec = endTime.diff(startTime, 'seconds');

var hours = parseInt(totalSec / 3600) % 24;
var minutes = parseInt(totalSec / 60) % 60;
var seconds = totalSec % 60;

var result = (hours < 10 ? "0" + hours : hours) + ":" + (minutes < 10 ? "0" + minutes : minutes) + ":" + (seconds < 10 ? "0" + seconds : seconds);

解决方案并非完全按时完成,而是将旧学校逻辑与时刻结合起来。

但这将满足您的要求。

OR

删除旧学校的逻辑,真正使用代码下面的时刻。

var result = moment().startOf('day')
        .seconds(totalSec)
        .format('H:mm')

JSFiddle两个版本。

答案 1 :(得分:2)

将给出确切结果的最佳解决方案。 即使您的小时数是3位数字,也可以给出正确的结果。

const allhours= [
 '5677:40:20',
 '888:30:50'
]
const totalhours = allhours.slice(1)
.reduce((prev, cur) => moment.duration(cur).add(prev),
moment.duration(allhours[0]));
var ms = totalhours ._milliseconds;
var ticks = ms / 1000;
var hh = Math.floor(ticks / 3600);
var mm = Math.floor((ticks % 3600) / 60);
var ss = ticks % 60;


console.log(hh+""+mm+""+ss);