今天是第几周?ISO 8601 周数计算规则与排期用法
搞清某个日期是今年第几周,要先分清 ISO 8601 和自然周。本文讲透周一起算、第一周含周四的规则,给出真实输入输出例,以及项目排期、财报、物流里怎么用周数对齐口径。
今天是第几周?把 ISO 8601 周数规则讲清楚
每到月初,总有人在群里问"现在第几周了"。这个问题看着简单,真要对齐口径却容易翻车,因为"第几周"在不同系统里算法不一样。一个柏林的开发说 W23,一个北美的财务说 W24,两人都没错,只是用了两套周制。本文把规则讲透,顺带说说排期、财报、物流里到底该怎么用。
ISO 8601 的两条硬规则
国际标准 ISO 8601 对周数只定了两条规则,记住这两条,后面所有"反常识"的结果都能解释:
- 一周从周一开始,到周日结束。
- 一年的第 1 周,是含当年第一个周四的那一周。等价说法:含 1 月 4 日的那一周。
第二条是关键,也是最容易被忽略的。它不说"含 1 月 1 日的那周是第 1 周",而是绑定周四。原因在于,只有让第 1 周至少包含 4 天落在新的一年里,周数才不会在年头年尾来回跳。这条规则写在 ISO 8601 标准正文里,周一起算同样是标准的明文规定,不是某个软件的自定义习惯。
直接后果是:一个 ISO 周归属于它的周四所在的年份。所以 1 月头几天可能还算上一年的最后一周,12 月末几天可能已经算下一年第 1 周。
一个真实例子:某天到底是第几周
光讲规则太抽象,看一组具体输入输出。
输入 2021 年 1 月 1 日,这天是周五。按 ISO 规则,它所在那一周的周一到周四(2020 年 12 月 28 日到 31 日)全部落在 2020 年,周四在 2020 年,所以这一整周归 2020 年。结果是:这天是 2020 年的 ISO 第 53 周,而不是 2021 年第 1 周。
反过来,输入 2024 年 12 月 30 日(周一),它那一周的周四是 2025 年 1 月 2 日,落在 2025 年,于是这天属于 2025 年的 ISO 第 1 周。
这两个例子里,日历年和 ISO 周年(周数所属的年份)是错开的。所以工具会把"周年"和"日历年"分开显示。你可以在 周数计算器 里输入这两个日期亲自验一下,正查反查都能跑。
ISO 周和自然周差在哪
很多人嘴里的"自然周"其实是美式 / 北美约定,它和 ISO 有两处不同:
- 起始日:美式从周日开始,ISO 从周一开始。
- 第 1 周定义:美式把含 1 月 1 日的那一周直接算第 1 周,哪怕它只有一两天残周;ISO 要求第 1 周含一个周四。
这两点叠加,导致年初这两套数可能差一周。欧洲、多数 ERP 和薪资系统、ISO 日期工具链统一用 ISO;北美的纸质日历、Excel 的 WEEKNUM 默认参数,常是周日起算的美式编号。报数字之前,先问清对方用哪套,否则核对一整天的财报可能因为差一周全对不上。
为什么有的年份有 53 周
365 天等于 52 周零 1 天,闰年是 52 周零 2 天,多出来的天慢慢累积。ISO 8601 下,当 1 月 1 日是周四,或者闰年且 1 月 1 日是周三时,这一年就有第 53 周,大约每 5 到 6 年出现一次。2015、2020、2026 都是 53 周的 ISO 年,2021、2025 是 52 周。
这个边角问题坑过不少人:硬编码 52 行的年度计划模板,在 53 周的年份里,最后一周的数据没地方放,BI 看板每隔几年就冒出"缺失第 53 周"的 bug。所以做模板前,先看这一年总共几周。
排期、财报、物流里怎么用
我自己最常用的是给跨国团队排 sprint。团队把每个双周迭代标成"W22–W23",柏林的人和圣保罗的人不用为具体日期扯皮,指的是同一段两周。我会选 sprint 起始那个周一,读出 ISO 周号,要收尾周就加一,前后对得严丝合缝。这里必须用 ISO,因为 Jira、Linear 和欧洲日历本来就用它。
财报场景反过来用:财务给一份"第 6 周,FY2026"的报表,我要拿到真实日期去跟流水核对,就切到反查模式,输入年份和周号,直接读出周一到周日的范围。物流和生产排程同理,按周下单、按周交付,比摆一堆会变动的具体日期清爽。算两个日期相隔多少天时,我会换 日期差计算器;要排除周末算实际工时,就用 工作日计算器。
小结
周数计算的全部坑,都来自"第 1 周怎么定义"这一点。记住 ISO 8601 的两条规则:周一起算,第 1 周含周四。年初年尾的日期,务必看 ISO 周年那行,别只看日历年。报数字前确认对方用 ISO 还是美式,做年度模板前确认这一年是 52 周还是 53 周。这几条记牢,跨国排期和财报核对就不会因为差一周白忙。
Made by Toolora · Updated 2026-06-13