ISO 周数查询
输入任意日期,即可读取它的 ISO 8601 周数、ISO 年份(年末年初可能与日历年份不同)、星期、年内第几天和所属季度。
ISO 周从星期一开始。第 1 周包含当年的第一个星期四 —— 所以 1 月 1 日有时属于前一个 ISO 年,12 月 31 日有时属于下一个 ISO 年。
什么是 ISO 周数
ISO 8601 定义了周数编号,使全世界的日历、薪资系统和供应链报表能就「第 23 周」的含义达成一致。ISO 年的第 1 周是包含该年第一个星期四的那一周——等价地说,是包含 1 月 4 日的那一周。每周从星期一到星期日。其结果是,12 月最后几天可能属于下一个 ISO 年的第 1 周,而 1 月最初几天可能属于上一个 ISO 年的最后一周。这就是本工具同时打印日历年和 ISO 年的原因。
当前周数 —— 快速查询
打开页面后,日期输入框已预填为今天,因此下方面板已显示当前 ISO 周数、ISO 年、星期、年内第几天和季度。在你随意尝试之后,「设为今天」按钮可将其重置。常见组合:「现在是第几周?」——读标题;「3 月 17 日是第几周?」——输入 03/17/当前年份;「2026 年圣诞节是第几周?」——输入 2026-12-25。
ISO 年与日历年 —— 边界情形
两个年份在大多数日期上一致,但在年份边缘会分歧。例如 2026-01-01 是星期四,所以它属于 2026 年的 ISO 第 1 周——日历年和 ISO 年一致。但 2027-01-01 是星期五,这意味着它落在 2026 年的 ISO 第 53 周(因为那一周的星期四 2026-12-31 在 2026 年)。当你写形如 2027-W01 的文件名或报表标题时,请仔细核对该 W 编号对应哪一年——本工具始终显式显示 ISO 年。
- 2025-12-29(星期一)→ ISO 2026-W01-1(日历年 2025,ISO 年 2026)
- 2026-01-04(星期日)→ ISO 2026-W01-7
- 2026-12-31(星期四)→ ISO 2026-W53-4(因为 1 月 1 日是星期四,所以存在第 53 周)
- 2027-01-03(星期日)→ ISO 2026-W53-7
ISO 周紧凑记法
ISO 8601 允许将日历日期写成「YYYY-Www-D」,其中 ww 是(补零的)周数,D 是星期(1 = 星期一 至 7 = 星期日)。本工具会输出可直接复制的该字符串——当数据库列期望 ISO 周格式,或薪资周期以这种方式报告期间边界时很有用。不带日期后缀(「YYYY-Www」)时,该值标识一整周。
2026 年及其他年份的总周数
大多数 ISO 年有 52 周;有些有 53 周。53 周的年份是 1 月 1 日落在星期四的年份,或闰年中 1 月 1 日落在星期三的年份。「本 ISO 年总周数」一行告诉你 2026 年属于哪一种——而「剩余周数」一行会倒数所显示 ISO 年还剩多少个 ISO 周,对于「在年底前」结束的项目规划很有用。
- 2026 年附近的 53 周年份:2020、2026、2032、2037、2043、2048
- 2026 年本身:53 个 ISO 周(2026 年 1 月 1 日是星期四)
- 相邻:2025 年有 52 周,2027 年有 52 周
年内第几天与季度
还有两个有用的计数器共用此面板。年内第几天(1–365,闰年为 1–366)让你能为 8 月 29 日写出像「sample-2026-241」这样简洁的夹具标识符。季度(Q1–Q4)把日期映射到标准的财务季度划分:Q1 = 1–3 月,Q2 = 4–6 月,Q3 = 7–9 月,Q4 = 10–12 月。许多公司在不同的月份开始财年;如果你的公司如此,请在读取季度前将日期向前移动相同的月数。
在代码中计算 ISO 周数
每个主流标准库都内置了此功能,通常只需一次方法调用。本工具的算法与这些库的行为一致,因此其值可在各语言间复现。
- JavaScript (Intl): new Intl.DateTimeFormat('en-US', { weekYear: 'numeric', week: 'numeric' }).formatToParts(date)
- Python: date.isocalendar() returns (iso_year, iso_week, iso_weekday)
- Go: t.ISOWeek() returns (year, week)
- SQL (PostgreSQL): EXTRACT(WEEK FROM ts) and EXTRACT(ISOYEAR FROM ts)
- Java: LocalDate.of(...).get(WeekFields.ISO.weekOfWeekBasedYear())