无需上传, 100% 本地处理, 无需账户

文章

计算两个日期之间的工作日数

「加 30 个工作日」听起来简单,直到你意识到不同国家的节假日各不相同、周末不一定是周六和周日、而且大多数计算器对是否计入起始日的规则也存在分歧。本文解释其中的机制,让你清楚自己实际在计算什么。

什么是工作日

工作日是指既不是周末、也不是公共假日的日子。在大多数国家,这意味着周一到周五,减去该国劳动法或银行体系认可的官方公共假日。日历日计数与工作日计数之间的差距增长很快:一个 30 个日历日的跨度,若跨越法国的圣诞节和元旦,扣除周末和相关公共假日后,大约只剩 20 个工作日。请注意,周末的定义本身也因地而异:在一些波斯湾国家,工作周为周日至周四,周五和周六为周末。这一定义在边界处最为关键:如果截止日期落在周六,实际截止时间通常是前一个周五或后一个周一,取决于合同或司法管辖区的规定。两种答案本身都没有错;重要的是双方使用相同的规则。

12 月日历网格,周末以灰色标注,公共假日以红点标记,剩余工作日以白色突出显示

含端点与不含端点的计数方式及差一错误

两人对同一时间段计数结果不同,最常见的原因是起始日和结束日是否计入。含端点计数将两个端点都视为时间段的一部分。不含端点计数忽略一个或两个端点。一份合同写「订单日起 5 个工作日内交货」是有歧义的:第零天是否指订单日本身,即交货截止时间为第 5 天结束,还是计数从下一个工作日开始?在实践中,商业法中的付款和运输条款通常排除起始日、包含结束日,使时间段呈左开右闭或半开区间而非完全闭合区间。当措辞不明确时,最稳妥的做法是询问并记录答案,然后用一个明确说明所用规则的工具来验证计数。本站的工作日计算器默认使用含端点计数:起始日和结束日均计入总数。

固定节假日、移动节假日与地区差异问题

公共假日分为两类。固定日期假日每年在相同日历日:1 月 1 日、7 月 4 日、12 月 25 日。移动假日每年变化,因为它们锚定于农历或宗教历法:复活节及其衍生节日(复活节星期一、耶稣升天日、圣灵降临节星期一)每年可偏移多达五周,具体取决于当年的历法。对任何计算器而言,更大的挑战是地区覆盖范围。德国有 9 个联邦假日,加上各州额外的 2 至 5 个假日。西班牙有全国性假日,加上各自治区的假日。美国有联邦假日,但并没有全国性规定要求私营雇主遵守。本站的工作日工具覆盖了法国、美国、英国、德国、西班牙、意大利、加拿大和比利时的主要全国性假日。地区性假日不包含在内。如果你的合同或 SLA 指定了特定的州或省份,请对照权威的本地信息源核查结果。

一个日历月,周末已标注阴影,一个公共假日已标记,显示计算工作日时哪些天会被跳过。

实际应用:付款条款、SLA 截止日期、通知期

工作日计算最常见的实际用途是付款条款。「net-30」表示付款须在发票日期后 30 个日历日内完成,但有些合同写的是「net-30 个工作日」,这会在付款窗口上多出数周时间。签字前弄清楚其中差异很重要。运输和物流 SLA 通常以工作日报价,因为承运商在周末和公共假日不运营;一个周五下单的「5 个工作日送达」,最早也要到下一个周五才能到货。劳动法通常以工作日规定通知期:周一提出的需要 10 个工作日通知期的辞职,若期间无节假日,则两个日历周后生效,但如果有公共假日落入窗口期,日期则会顺延。房东租客法律、法律传唤截止日期以及金融结算周期(T+1、T+2)都遵循工作日逻辑。本站的日期差工具让你比较总天数和日历周数,作为工作日数字的交叉核验。

在浏览器中完成计算,无需向任何地方发送数据

本站的工作日计算器和日期差工具完全在浏览器中运行。你输入两个日期,可选择一个国家以排除全国性假日,结果由 JavaScript 在本地计算。没有任何日期、日期范围或国家选项会发送到服务器。节假日逻辑在构建时已编译进页面:某年的法国、德国或美国节假日集通过小型算法动态计算,而非从远程数据库获取。由于移动节假日是计算得出而非存储的,在合理范围内,该工具无需网络连接即可处理过去和未来年份。代价正如上一节所述:节假日列表是经过筛选的全国性集合,并非全面的本地集合。将结果作为可靠的起点,需要精确时再核查地区性特殊规定。

本文涉及的工具

常见问题

net-30 是指 30 个日历日还是 30 个工作日?

在大多数标准商业用法中,net-30 指的是 30 个日历日。如果合同意指工作日,通常会明确说明。如有疑问,请查看合同措辞;两种解释之间的差距可能长达数周。

为什么工具不覆盖所有地区性假日?

工作日工具包含了八个国家的主要全国性公共假日。地区性假日(美国各州、德国各联邦州、西班牙各自治区)不包含在内,因为它们在次国家层级存在差异,全国性工具无法可靠地将其一概而论。工具已记录这一局限,以便你进行本地修正。

起始日是否计入?

本站的工作日计算器默认使用含端点的计数方式:起始日和结束日均计入总数。许多合同和法律框架不计入起始日(事件发生当天不算第一天)。如果你的情况排除第零天,请将结果减去一。