我有24小时内任意一天的开始和结束时间。
我想计算在特定时间范围内工作了多少小时。
例如,如果
startTime = '11:00';
endTime = '21:30';
calcOverTime(startTime, endTime) // result 1 hour worked between 8pm and 10pm
我该如何计算晚上8点到晚上10点之间的工作时间。
我希望输出为该范围内的计算小时数和分钟数。
我尝试了extendedMomentjs和范围,但是重叠并且包含功能仅返回true或false。
答案 0 :(得分:2)
var startTime = moment('1970-01-01 11:00');
var endTime = moment('1970-01-01 21:30');
var dayEndTime = moment('1970-01-01 20:00');
var overtime = moment.duration(0);
if (endTime.isAfter(dayEndTime)) {
var time = startTime.isAfter(dayEndTime) ? startTime : dayEndTime;
overtime = moment.duration(endTime.diff(time));
}
console.log('As Hours: ', overtime.as('hours'));
console.log('As Minutes: ', overtime.as('minutes'));
console.log('Get only Hours: ', overtime.get('hours'));
console.log('Get only Minutes: ', overtime.get('minutes'));
<script src="https://momentjs.com/downloads/moment.min.js"></script>
答案 1 :(得分:0)
const hours = (startTime, finishTime) => {
const [startHours, startMinutes] = startTime.split(':');
const [finishHours, finishMinutes] = finishTime.split(':');
const startTimeinMinutes = (parseInt(startHours) * 60) + parseInt(startMinutes);
const finishTimeinMinutes = (parseInt(finishHours) * 60) + parseInt(finishMinutes);
const totalMinutes = finishTimeinMinutes - startTimeinMinutes;
const minutes = totalMinutes % 60;
const hours = (totalMinutes - minutes)/60;
return `${hours}:${minutes < 10 ? '0' : ''}${minutes}`;
};
console.log(hours('11:00', '21:30'));
答案 2 :(得分:0)
如果我们使用的是moment.js
,这似乎可行:
d = moment.duration(moment(endTime, "HH:mm").diff(moment(startTime, "HH:mm")));
这提供了一个Duration
对象,您可以用各种方式将其打印出来,例如:
d.as('hours');
礼物:
10.5
或者:
console.log(`${d.hours()}:${d.minutes() < 10 ? '0' : ''}${d.minutes()}`);
这给出了:
10:30
顺便说一句,由于您说“我如何计算晚上8点到晚上10点之间的工作时间。”,请尝试以下操作:
d = moment.duration(moment(endTime, "HH:mm").diff(moment("20:00", "HH:mm")));
让工作人员在午夜之后处理工作……