如何判断员工班次间隔并计算无中断工作至午夜的总工时?
计算员工跨天无间断工作至午夜的有效工时
我需要处理每日员工打卡记录,部分员工存在跨天无间断工作的情况。核心需求是:计算员工结束于午夜(12:00 AM)且无中断时段的工作总工时。
原始打卡记录
| 员工 | 开始时间 | 结束时间 |
|---|---|---|
| 员工A | 9 AM | 3 PM |
| 员工A | 3 PM | 10 PM |
| 员工A | 10 PM | 12:00 AM |
| 员工B | 3 AM | 9 PM |
| 员工B | 10 PM | 12:00 AM |
| 员工C | 3 AM | 9 PM |
| 员工D | 10 PM | 12:00 AM |
在上述记录中:
- 员工A无间断从9 AM工作至午夜,累计有效工时15小时
- 员工B在9 PM到10 PM之间有休息,仅计入10 PM至午夜的2小时有效工时
- 员工C未工作至午夜,有效工时为0
- 员工D从10 PM直接工作至午夜,有效工时为2小时
期望计算结果
| 员工 | 总工时 |
|---|---|
| 员工A | 15 |
| 员工B | 2 |
| 员工C | 0(未工作至午夜) |
| 员工D | 2 |
我尝试过以下方法但未能解决问题:
- 使用
for loop循环处理,但由于每位员工的打卡条目数量不一致,代码逻辑变得混乱 - 尝试过LINQ查询及自连接表的方式,但没能实现正确的工时计算
内容的提问来源于stack exchange,提问作者AliAzra
相关产品推荐
相关产品推荐

