我有一个列表,其中包括多次超时或超时、突破或突破。我要计算从时间到超时的总持续时间。
这是数据。
const data =
[ { timeSheetDetailActivityId : 0
, timeSheetDailyActivityId : 0
, entryDateTime : '02:28'
, activityTypeId : 'Time In'
, comments : 'dgdfgdfg'
, isLeave : ''
}
, { timeSheetDetailActivityId : 0
, timeSheetDailyActivityId : 0
, entryDateTime : '03:28'
, activityTypeId : 'Time Out'
, comments : '2323'
, isLeave : ''
}
, { timeSheetDetailActivityId : 0
, timeSheetDailyActivityId : 0
, entryDateTime : '04:28'
, activityTypeId : 'Break In'
, comments : '2323'
, isLeave : ''
}
, { timeSheetDetailActivityId : 0
, timeSheetDailyActivityId : 0
, entryDateTime : '05:28'
, activityTypeId : 'Break Out'
, comments : '2323'
, isLeave : ''
}
, { timeSheetDetailActivityId : 0
, timeSheetDailyActivityId : 0
, entryDateTime : '06:28'
, activityTypeId : 'Time In'
, comments : '2323'
, isLeave : ''
}
, { timeSheetDetailActivityId : 0
, timeSheetDailyActivityId : 0
, entryDateTime : '07:28'
, activityTypeId : 'Time Out'
, comments : '232323'
, isLeave : ''
}
] 这是输入表格
注:所以第一次进入是2:28或超时3:28和小时将是1.在破门而入或再次突破后,时间是6:28或超时7:28,和hour将是1。现在的是2小时。请大家建议我如何才能在使用JavaScript时获得的总持续时间2,打字本。
发布于 2022-01-12 11:10:03
下面是minimal reproducable example来确定两个时间字符串之间的差异(格式化为'hh:mm')。
const tIN = '03:28'.split(`:`).map(Number);
const tOUT = '04:28'.split(`:`).map(Number);
let [now, then] = [new Date, new Date];
now.setHours(tIN[0]);
now.setMinutes(tIN[1]);
then.setHours(tOUT[0]);
then.setMinutes(tOUT[1]);
const diff = dateDiffCalc(then - now);
console.log(diff);
function dateDiffCalc(milliseconds) {
const secs = Math.floor(Math.abs(milliseconds) / 1000);
const mins = Math.floor(secs / 60);
const hours = Math.floor(mins / 60);
return {
days: Math.floor(hours / 24),
hours: hours % 24,
minutes: mins % 60,
seconds: secs % 60,
};
}
https://stackoverflow.com/questions/70680151
复制相似问题