如何使用 Moment.js 获取总时数 HH:MM 格式?
How to get total hours HH:MM format using Moment.js?
我想使用 Moment.js 计算周总时间。请指教。
这是我到目前为止尝试过的:
total = "00:00";
for (var i in json_obj) {
var timeEnd = json_obj[i].END;
var timeStart = json_obj[i].START;
var timeDiff = moment.utc(moment(timeEnd, "HH:mm:ss").diff(moment(timeStart, "HH:mm:ss"))).format("HH:mm");
var res = timeDiff;
total = moment().add(res);
这是我在 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);
解决方案不是完全用 moment 实现的,而是将老式逻辑与 momentjs 结合起来。
但这将满足您的要求。
或
要删除旧学校逻辑并真正使用下面的代码。
var result = moment().startOf('day')
.seconds(totalSec)
.format('H:mm')
JSFiddle 两个版本。
给出准确结果的最佳解决方案。
即使您的工作时间是 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);
我想使用 Moment.js 计算周总时间。请指教。 这是我到目前为止尝试过的:
total = "00:00";
for (var i in json_obj) {
var timeEnd = json_obj[i].END;
var timeStart = json_obj[i].START;
var timeDiff = moment.utc(moment(timeEnd, "HH:mm:ss").diff(moment(timeStart, "HH:mm:ss"))).format("HH:mm");
var res = timeDiff;
total = moment().add(res);
这是我在 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);
解决方案不是完全用 moment 实现的,而是将老式逻辑与 momentjs 结合起来。
但这将满足您的要求。
或
要删除旧学校逻辑并真正使用下面的代码。
var result = moment().startOf('day')
.seconds(totalSec)
.format('H:mm')
JSFiddle 两个版本。
给出准确结果的最佳解决方案。 即使您的工作时间是 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);