什么是工作日计算器?
工作日计算器告诉你两个日期之间有多少个工作日。与简单的天数统计不同,它会忽略你不工作的日子——默认是周末,即周六和周日——只统计典型办公室、学校或服务机构开门的日子。你还可以去除节假日和公司停业日,这样数字就反映了实际工作发生的日子。
这一点很重要,因为日历天数和工作日很少一致。日历上的两周是十四天,但其中通常只有十天是工作日。当你规划项目、给出交付窗口或计算通知期时,工作日的数字才是诚实的。
何时需要工作日
项目规划与截止日期
大多数日程以工作日表示:“五个工作日内完成”、“提前两周通知”、“十个工作日内结算”。把这些承诺换算成真实的日历日期——再换算回来——正是工作日统计的用途。
薪酬、休假与开票
工资、带薪休假和许多服务合同都以工作日计量。一旦时间段跨越周末和节假日,手动计算就容易出错,所以自动统计能让工时表和发票保持一致。
计算器如何工作?
你提供一个开始日期和一个结束日期。计算器随后遍历该范围内的每个日历日,只保留工作日:
- 工作日是既非周末也非所列节假日的天数。
- 总天数是该范围内日历日的简单计数。
- **周末(非工作日)**是两者之差,即被跳过的天数。
三个选项决定统计方式:
- 工作周 — 周一至周五(默认)将周六和周日视为非工作日;周一至周六将周六计为工作日,只跳过周日。
- 包含结束日期 — 关闭时,范围是半开的,结束日期不被计入;开启时,结束日期也会被计入(如果它本身是工作日)。
- 节假日 — 可选的日期列表(ISO 格式
YYYY-MM-DD,用逗号分隔)。落在范围内某个工作日的每个节假日会被扣除一次;落在周末的节假日没有影响,因为那天本来就是非工作日。
两个日期的顺序无关紧要——计算器始终使用绝对跨度——而缺失或无效的日期不会产生结果。
公式
设开始日期为 ,结束日期为 。遍历该范围时,当某一天 既不是周末也不是节假日时,它就是工作日。工作日统计是对范围内每一天的指示函数求和:
其中 是所列节假日的集合, 在条件成立时为 ,否则为 。当包含结束日期时,上界变为闭区间 。
等价地,工作日就是总天数减去你跳过的天数:
其中 是日历日的总数, 是范围内的周末天数, 是落在原本属于工作日的那天的节假日数量。
示例
-
示例 1 —— 两个日历周,不含结束日期。
- 开始日期: 2024 年 1 月 1 日(周一)
- 结束日期: 2024 年 1 月 15 日(周一)
- 总天数: ,周末天数:
- 工作日:
-
示例 2 —— 同一跨度,含结束日期。
- 开始日期: 2024 年 1 月 1 日
- 结束日期: 2024 年 1 月 15 日,计入
- 工作日: (加上最后一个周一)
-
示例 3 —— 整整一个月(经典的八月案例)。
- 开始日期: 2022 年 8 月 1 日(周一)
- 结束日期: 2022 年 8 月 31 日(周三),包含
- 总天数: ,周末天数:
- 工作日:
-
示例 4 —— 扣除一个节假日。
- 开始日期: 2024 年 1 月 1 日,结束日期: 2024 年 1 月 15 日,包含
- 节假日: 2024 年 1 月 1 日(元旦,周一)
- 工作日:
注意事项
- 节假日因国家、地区和雇主而异,所以计算器不做任何假设——由你列出适用于你的那些。
- 已经落在周末的节假日不会改变任何结果,因为那天从未被计为工作日。
- 切换到六天工作周会把周六计为工作日;周日始终被视为非工作日。
- 统计基于日历日期,与时区无关。
常见问题
周末会被算作工作日吗?
在默认的周一至周五模式下不会。如果你的一周是从周一到周六,切换工作周选项,周六就会被计入,而只跳过周日。
我应该包含结束日期吗?
这取决于你遵循的惯例。“从今天起五个工作日”通常计算今天之后的日子,因此结束日期被排除;将两端都视为工作日的日期范围则应包含它。该开关允许任一规则。
如何添加多个节假日?
将它们列为用逗号分隔的 ISO 日期,例如 2024-12-25, 2024-12-26。每一个落在范围内工作日的节假日都会从总数中扣除。
日期的顺序重要吗?
不重要。计算器始终使用两个日期之间的绝对跨度,所以交换开始和结束会得到相同的工作日数。