日期时间 本地计算 开箱即用 内置示例 不留痕迹

周数计算器(ISO 8601)

输入任意日期,得到它的 ISO 周数、星期几、本周起止日期、年内第几天与所属季度;也可切换到反向模式,用「年份 + 周数 + 星期几」查出具体日期。

项目排期按周报、欧洲客户订单写 W38、敏捷迭代按 Sprint 周数——周数有两套口径:ISO 8601(国际标准,欧洲通行)与北美习惯(周日开头、1 月 1 日所在周为第 1 周),同一日期可能差一周。本工具按 ISO 8601 计算:周数、星期几、本周起止、年内第几天与季度,也支持「年 + 周 + 星期」反查日期。

ISO 口径要点:周一为一周开始;第 1 周是「包含第一个星期四的那周」——所以 12 月底的日子可能属于下一年的第 1 周,1 月初的日子可能属于上一年的最后一周(如 2027-01-01 属于 2026 年第 53 周)。与欧美同事对周数时先确认双方都用 ISO。

使用步骤

  1. 输入日期,看 ISO 周数、星期几、本周起止。
  2. 看年内第几天与所属季度,写周报直接引用。
  3. 反向模式:填年份 + 周数 + 星期几,查出具体日期。
  4. 与北美同事对周数时注意口径差异(ISO 周一开头)。

计算原理与示例

ISO 周数的定义

ISO 8601 规定:一周从周一开始,含当年第一个星期四的那一周为第 1 周(等价于含 1 月 4 日)。这样定义的目的是让「第 N 周」在各国、各系统间一致,避免出现「同一天在不同国家算不同周」的混乱。于是 2026-09-13(周日)属于 2026 年第 37 周,该周从 2026-09-07(周一)到 09-13(周日)。

跨年归属是怎么产生的

因为第 1 周必须包含星期四,元旦前后常出现跨年归属:2026-01-01(周四)属 2026 年第 1 周,而它所在的这一周从 2025-12-29 就开始了;反过来,2024-12-30(周一)虽然还在 2024 年,却属于 2025 年第 1 周。写周报、排生产计划时如果不注意这一点,很容易把跨年那几天归错年份。

一年会不会有 53 周

一年有 52 周加 1 天(平年)或 2 天(闰年),当这多出来的 1~2 天落在周四及以后时,该年就会有第 53 周。ISO 规定有 53 周的年份称为「长年」,大约每 5~6 年出现一次。2026 年就有第 53 周(2026-12-28 至 2027-01-03),而 2025 年没有。

代码示例

JavaScript ISO 周数算法

function isoWeek(d) {
  const t = new Date(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate()));
  const day = t.getUTCDay() || 7;                 // 周日算 7
  t.setUTCDate(t.getUTCDate() + 4 - day);         // 移到本周周四
  const yearStart = new Date(Date.UTC(t.getUTCFullYear(), 0, 1));
  return {
    year: t.getUTCFullYear(),
    week: Math.ceil(((t - yearStart) / 86400000 + 1) / 7)
  };
}

isoWeek(new Date(2027, 0, 1));   // { year: 2026, week: 53 }

Python isocalendar 一行搞定

from datetime import date

d = date(2027, 1, 1)
d.isocalendar()   # (2026, 53, 5) → 2026 年第 53 周周五

# 反查:年份 + 周数 + 星期 → 日期
from datetime import timedelta
iso = date(2026, 1, 4)   # 该年第一个周四所在周的周四
date.fromisocalendar(2026, 53, 5)   # 2026-12-31

常见问题

ISO 周数和日历上的周数有什么区别?

区别在起点与第 1 周的定义。ISO 周固定从周一开始;第 1 周是含当年第一个星期四的那一周(等价于含 1 月 4 日)。所以 1 月初的几天可能被算作上一年的最后一周,这与「1 月 1 日就是第 1 周」的直觉不同。

为什么 1 月 1 日可能属于上一年?

如果 1 月 1 日落在周五、周六或周日,它所在的这一周没有包含星期四,按 ISO 规则就归入上一年最后一周。例如 2027-01-01 是周五,它属于 2026 年第 53 周,而不是 2027 年第 1 周。

一年一定有 53 周吗?

不是。平年 365 天 = 52 周 + 1 天,闰年 366 天 = 52 周 + 2 天。当这多出的 1~2 天包含星期四时,该年就会产生第 53 周。2026 年有第 53 周,2025 年和 2027 年都没有。

怎么快速知道今天是今年的第几周?

直接输入今天的日期即可,结果里的「本年第几天」也会一起给出。若你用的是周报系统,注意它可能采用「1 月 1 日为第 1 周」的非 ISO 口径,两者在跨年那几周会相差 1。

周报按 ISO 周编号会不会对不上?

要确认团队用哪个口径。ISO 周下,年初几天可能属于上一年的第 52/53 周,年末几天可能属于下一年的第 1 周;如果团队习惯「1 月 1 日开新周」,两套编号在跨年时会错开一周。本工具提供 ISO 口径,可用来核对系统生成的周号。

反查日期时「星期几」怎么选?

按需要填:查周报开始日选周一,查周末的截止日选周日。默认周一。如果某个年份没有第 53 周而你输入了 53,工具会按 ISO 规则把它顺延到次年并提示「该年无此周,已落到来年」,避免静默给出错误日期。

周数计算和时区有关吗?

本工具按你输入的日期字符串计算,不涉及时区转换。但如果你在跨时区的分布式系统里用「当前时刻」算周数,要注意服务器时区不同可能导致同一瞬间落在不同的日期,进而落到不同周。

延伸阅读

来自本站原创文章,讲清这个工具背后的算法与口径。