一、核心规则一句话:卡跟着班次走
判断"这一次打卡属于哪一天",标准不是打卡时间落在哪个自然日,而是它属于哪个班次的那一段。
以 20:00-08:00 的夜班为例,它的时间轴实际是这样:
20:00上班 —— 落在当日晚间;00:00跨过午夜,进入次日凌晨;08:00下班 —— 落在次日早晨。
也就是说,这个班次的下班时间在数值上小于上班时间(08:00 < 20:00)。系统识别到这一点,就应该知道"这个班的结束在次日",从而把 00:00~08:00 之间的打卡归到上班当天。
二、完整例子:一次夜班的六次打卡
员工排 3 月 10 日的夜班 20:00-08:00,中间 00:00-00:30 是宵夜休息。实际打卡:
| 打卡时间 | 考勤机记录的日期 | 归属日期 | 槽位 |
|---|---|---|---|
| 19:52 | 3-10 | 3-10 | 晚间上班(早到 8 分钟) |
| 23:58 | 3-10 | 3-10 | 宵夜前下班 |
| 00:32 | 3-11 | 3-10 | 宵夜后上班 |
| 07:55 | 3-11 | 3-10 | 晚间下班(早退 5 分钟) |
这一天算完,员工 3 月 10 日应该有 11.5 小时左右的出勤(扣掉宵夜),而 3 月 11 日的记录里不应该再出现这几条卡。如果 3-11 那边又算了一次,就会重复计工时。
三、为什么不能给所有卡统一加 24 小时
处理跨凌晨最常见的土办法是"只要时间小于上班时间,就 +24 小时"。方向是对的,但一刀切会出错:
- 有人在
19:30就到了(早到 30 分钟),19:30 < 20:00,被愚蠢地加上 24 小时变成"次日 19:30",直接判成迟到一整天; - 白班员工下午
16:00的卡,在某些班次配置下也会被误加; - 跨凌晨班次的下班卡如果是
09:30(加班到十点),加不加 24 小时结论不同。
正确顺序是:先按槽位的合理时间窗口判断该卡属于哪一段,再决定日期。早到的卡永远属于当天;只有"落在午夜之后、且早于下班时间"的卡才需要顺延。
四、跨月怎么不把一夜工时拆成两个月
3 月 31 日的夜班,19:52 打上班卡在 3 月,07:55 打下班卡在 4 月 1 日。如果按打卡日期统计,这一夜的工时会有一半落进 4 月,两个月的考勤都不对。
正确做法是整班归属:这一班完整算在 3 月 31 日名下,4 月 1 日的记录里不出现。同理,如果公司考勤周期是 26 日~次月 25 日,那么 25 日晚上上的夜班也要整班算进本期,不能因为下班卡落在 26 日就推到下一期。
五、跨夜班最容易错的 5 个地方
| 错误 | 后果 | 正确处理 |
|---|---|---|
| 按打卡日期统计 | 夜班员工每天被判缺卡/旷工 | 按班次归属日期 |
| 所有卡统一 +24h | 早到卡被推到次日,判成迟到一天 | 先定槽位再定日期 |
| 跨月不整班归属 | 一夜工时被拆到两个月,两个月都错 | 整班归到上班当天/当周期 |
| 宵夜时段当工时 | 每天多算 30 分钟,一个月多出十几小时 | 配置宵夜时段并扣除 |
| 夜班补贴按自然日发 | 跨月夜班补贴漏发 | 补贴跟班次归属日走 |
最后一条常被忽略:夜班补贴、夜宵补贴一般按"上了几个夜班"发,如果按自然日统计,跨月的那个夜班就会被漏掉一次。把补贴挂在班次归属日上,就不会出现这个问题。
三班倒(早班 08-16、中班 16-24、夜班 00-08)的公司还要注意:夜班 00:00-08:00 严格说不跨午夜(00:00 就是当天开始)。这类班次不需要跨天处理,但排班表上"今天上夜班"指的是当天 00:00 到 08:00,还是次日 00:00 到 08:00,必须在制度里写清楚,否则排班和打卡永远对不上。
