使用方法
- 「算法」选法 A 或法 B。法 A 用「天数 × 每天小时」做月度汇总,法 B 用上下班打卡时刻逐日核对,两者算的不是同一件事。
- 「工作天数」填统计周期内的上班天数,示例 22,即一个月 22 个工作日;量程 1 到 366,步长 1 天。两个算法共用这一项。
- 「标准工时」填制度规定的每日工时,示例 8,单位小时;它只用来判加班,不参与总工时的计算,量程 1 到 12,步长 0.5。
- 法 A 只需再填「每天工时」,示例 8 小时,量程 0.5 到 24,步长 0.5;排班制常见的 9 小时、10 小时也直接填在这里。
- 法 B 填「上班时间」与「下班时间」,示例 09:00 与 18:30,再填「午休」小时数,示例 1;午休是扣除项,不休息就填 0。
- 夜班跨午夜时勾选「跨午夜夜班」,下班时刻按次日处理;不勾选而下班时刻又早于上班时刻,页面会给出提示而不是算出负工时。
- 所有输入框改动后立即重算;光标停在任一框里按回车也会立刻计算,不必去点按钮。
- 对照表默认展开前六行,「加载更多」展开其余行;「复制对照表」取 TSV,「导出 CSV」下载带 UTF-8 BOM 的文件。
这个工作小时计算器能解决什么问题
这个工作小时计算器针对的场景很具体:月底要报工时,或某个月的班表被改过几轮,需要知道这一期一共上了多少小时、其中有多少小时算加班。它把两件常被混在一起的事分开算——总工时是一个量,加班是另一个量,后者要靠「标准工时」这个制度值去切。
与同一分类下的兄弟页分工清楚:工时表生成器产出的是一张可打印的排班表格,工作日计算器回答的是两个日期之间有多少个工作日;前者给的是表格形态,后者给的是天数,本页给的是小时数与其中的加班部分。天数要换算成小时,落点就到了本页。
把午休做成显式扣除项是有意的。很多考勤系统里的「在岗时长」直接从打卡记录算,午休、待命、培训是否被计入,取决于劳动合同与当地法规;本页让你自己填午休,就是为了把这个口径摆到台面上,改一个数就能看清它对整月结果的影响。
计算原理与变量说明
本页两种算法各自独立,变量如下:
- 天数 days:统计周期内的上班天数,示例 22,两个算法共用。
- 标准工时 std:制度规定的每日工时,示例 8 小时,只用于判加班。
- 每天小时 hpd(法 A):示例 8;总工时 = 天数 × 每天小时,示例 22 × 8 = 176 小时。
- 上班 / 下班(法 B):示例 09:00 与 18:30,在岗时长 9.5 小时;午休示例 1 小时。
- 当日工时 = 下班 − 上班 − 午休,示例 9.5 − 1 = 8.5 小时;当日加班 = max(0, 8.5 − 8) = 0.5 小时。
- 法 B 汇总:总工时 = 当日工时 × 天数 = 8.5 × 22 = 187 小时;总加班 = 加班 × 天数 = 0.5 × 22 = 11 小时。
一、工时与在岗时长不是一回事,差别就在午休这类扣除项。 09:00 到 18:30 的在岗时长是 9.5 小时,扣掉 1 小时午休才是 8.5 小时的工时。午休、待命、岗前培训是否计入,取决于劳动合同的约定与当地法规,没有统一答案;本页把午休做成显式输入而不是写死成 1 小时,就是为了让你自己决定口径。少扣这一小时,22 天下来就会虚增 22 小时,加班判定也会被整体抬高。
二、加班判定完全依赖「标准工时」这个制度值。 它的计算公式是 加班 = max(0, 当日工时 − 标准工时),标准工时一变,同样的打卡记录会得到完全不同的加班数:当日 9 小时在 8 小时标准下是 1 小时加班,在 9 小时排班制下就是 0。8 小时是中国标准工时,9 小时、10 小时常见于综合计算工时与特殊排班,切换前先确认自己适用哪一种制度。
三、跨午夜夜班必须按次日处理,否则会算出负工时。 22:00 上班、06:00 下班在数值上是 6 减 22,直接相减得到负值,而真实工时是 8 小时。本页的做法是:勾选「跨午夜夜班」后给下班时刻加 24 小时再相减;如果不勾选而下班时刻早于上班时刻,页面直接给出提示,不会返回一个负数让你误以为算出来了。
四、法 A 适合月度汇总,法 B 适合打卡核对,两者混用会差出午休这一块。 同样是 22 天,法 A 填 8 得 176 小时,法 B 用 09:00~18:30 扣 1 小时午休得 187 小时——差的 11 小时既不是误差也不是加班,而是法 A 里的「每天 8 小时」已经是扣掉午休之后的净工时,法 B 的 8.5 小时是另一套口径。核对工资条用法 B,估算月度产能用法 A,不要把两个数放在一起比。
完整示例(数值仅作演示)
示例条件:工作天数 22、标准工时 8 小时;法 B 另取上班 09:00、下班 18:30、午休 1 小时。结果由本页自己的算法复算得到。
- 法 A:总工时 = 22 × 8 = 176 小时;每天 8 小时正好等于标准工时,总加班为 0。
- 法 B 在岗时长 = 18:30 − 09:00 = 9.5 小时;扣掉午休 1 小时后当日工时 = 8.5 小时。
- 当日加班 = max(0, 8.5 − 8) = 0.5 小时;每天只超半小时,一个月下来并不少。
- 法 B 汇总:总工时 = 8.5 × 22 = 187 小时,其中加班 = 0.5 × 22 = 11 小时。
- 只改每天工时:22 × 9 = 198 小时,按 8 小时标准每天加班 1 小时;22 × 10 = 220 小时,每天加班 2 小时。
- 只改打卡时刻:08:00 到 20:00、午休 1 小时,当日 11 小时、加班 3 小时;09:00 到 17:00、午休 1 小时,当日 7 小时、加班 0 小时。
- 把「午休」改成 0:同样的 09:00~18:30,当日工时变成 9.5 小时、加班 1.5 小时,一个月多出 22 小时。
上面每个数字都由页面算法算出,把同样的参数填进工具区即可得到相同结果;示例数值均为演示。
工时对照表
第一张表固定标准工时 8 小时,列出十二组常见起止时间与午休对应的当日工时和加班。前几行是标准班制,中间的 08:00~20:00 属于明显的长班,最后一组 08:30~18:00 少扣半小时午休,当日工时多了 1 小时。
| 上班 ~ 下班 | 午休 h | 当日工时 h | 加班 h |
|---|---|---|---|
| 08:30 ~ 17:30 | 1 | 8 | 0 |
| 09:00 ~ 18:00 | 1 | 8 | 0 |
| 09:00 ~ 18:30 | 1 | 8.5 | 0.5 |
| 08:00 ~ 17:00 | 0.5 | 8.5 | 0.5 |
| 09:30 ~ 19:00 | 1 | 8.5 | 0.5 |
| 08:00 ~ 20:00 | 1 | 11 | 3 |
| 10:00 ~ 19:00 | 1 | 8 | 0 |
| 07:30 ~ 16:30 | 1 | 8 | 0 |
| 09:00 ~ 21:00 | 1 | 11 | 3 |
| 08:00 ~ 16:00 | 0 | 8 | 0 |
| 09:00 ~ 17:00 | 1 | 7 | 0 |
| 08:30 ~ 18:00 | 0.5 | 9 | 1 |
第二张表是法 A 的天数与每天小时对照,用来快速估算一个月的工作量;22 × 8 = 176 那一行就是本页的默认示例。
| 天数 | 每天小时 h | 总工时 h |
|---|---|---|
| 5 | 8 | 40 |
| 10 | 8 | 80 |
| 20 | 8 | 160 |
| 21 | 8 | 168 |
| 22 | 8 | 176 |
| 22 | 9 | 198 |
| 22 | 10 | 220 |
| 26 | 8 | 208 |
结果边界、舍入与适用说明
- 工作天数允许 1~366 天,步长 1;天数是乘数,填 0 天没有工时可统计,页面会明确提示。
- 每天工时允许 0.5~24 小时,步长 0.5;低于 0.5 小时或高于 24 小时都不属于常规排班,会给出具体提示。
- 标准工时允许 1~12 小时,步长 0.5,只用于判加班;制度值填错,加班数就错,总工时不受影响。
- 午休允许 0~6 小时,步长 0.5;它是扣除项,填 0 表示不扣。午休大于或等于在岗时长时页面报提示,不会返回负数。
- 法 B 的下班时刻早于上班时刻时,必须勾选「跨午夜夜班」;不勾选则由页面提示,不会算出负工时。
- 小时数保留 2 位小数,末尾的 0 会去掉;中间过程按分钟计算后再换算成小时,不做提前截断。
- 本页只算小时数,不涉及加班费率、调休与法定节假日倍数;加班费要按当地规定与合同约定的倍率另算。
- 待命、出差在途、岗前培训是否计入工时由制度决定,本页没有为它们单列开关,需要计入时请把时间并进上班或下班时刻里。
常见问题
在岗 9.5 小时,为什么工时只有 8.5 小时?
因为午休被扣掉了。本页的公式是「当日工时 = 下班 − 上班 − 午休」,09:00 到 18:30 在岗 9.5 小时,扣掉 1 小时午休后是 8.5 小时。午休算不算工时取决于劳动合同与当地法规,本页把它做成显式输入,不休息就填 0。
法 A 算出 176 小时,法 B 算出 187 小时,哪个对?
两个都对,口径不同。法 A 的「每天 8 小时」是已经扣掉午休的净工时,22 天就是 176 小时;法 B 的 09:00~18:30 扣 1 小时午休后是 8.5 小时,22 天是 187 小时,差的 11 小时是午休口径造成的。核对工资条用法 B,估算月度产能用法 A。
夜班 22:00 上班、06:00 下班为什么算不出来?
直接相减会得到负数。勾选「跨午夜夜班」后,下班时刻按次日处理,即加 24 小时再相减,得到 8 小时。不勾选而下班时刻又早于上班时刻时,页面会提示你勾选,而不是返回一个负数。
标准工时要填多少?
按你适用的制度填:8 小时是中国标准工时,9 小时、10 小时常见于综合计算工时与特殊排班制。这个值只影响加班判定,不影响总工时——当日 9 小时在 8 小时标准下是 1 小时加班,在 9 小时排班制下就是 0。
午休时间该填实际休息时长还是公司规定的时长?
填你打算从工时里扣除的那一个。要核对实际出勤就填实际休息时长,要按公司规定口径报工时就填规定值。填 0 表示午休计入工时,这时 09:00~18:30 的当日工时是 9.5 小时、加班 1.5 小时。
算出的加班小时能直接换算成加班费吗?
不能直接用。本页只给小时数,加班费还要乘上合同约定的倍率,且工作日延时、休息日与法定节假日的倍率并不相同,各地规定也有差别。拿到小时数之后再按适用倍率折算,或用专门的加班费工具与年薪换算时薪计算器配合估算。
这个工具免费吗?
免费,无需注册即可使用。
输入的数据安全吗?
安全。计算在当前浏览器本地完成,不会上传输入内容。