piapia123
zh

月历生成

转换

所有处理都在浏览器本地完成,数据不上传服务器

输入
把文件拖到这里可直接载入
输出

产物是等宽文本的月历网格,不是一张画出来的表 —— 因为它要能粘进工单、周报、代码注释、`README` 里的排期表,贴到哪里都对齐。 输入年月(`2026-10`、`2026/10`、`2026年10月` 都认)留空就是本月;可以一次出多个月,跨年会自动接上。两个选项管的是不同场合的习惯:一周从周一还是周日开始(中文与欧洲习惯周一,北美习惯周日),以及要不要显示 ISO 周数(排期与「第几周汇报」的场合需要)。 ⚠️ 周数按 ISO 8601:一周从周一开始,且包含 1 月 4 日的那一周是第 1 周。所以 1 月 1 日可能属于上一年的第 52 或 53 周,12 月 31 日也可能属于下一年的第 1 周。这个口径与「从元旦数 7 天算一周」不同,而后者在年初年尾会整体差一周 —— 排期表对不上通常就是这里出的问题。 全部计算按 UTC 的日期做,与你的时区无关:日历是纯日期问题,用本地时间会让同一个「2026 年 10 月」在不同时区算出不同的第一天是星期几。

功能

  • 等宽文本网格,可直接粘进工单、周报、代码注释
  • 认 `2026-10`、`2026/10`、`2026年10月`、`2026-10-05` 几种写法;留空即本月
  • 一周可以从周一开始(中文与欧洲习惯)或从周日开始(北美习惯)
  • 可显示 ISO 8601 周数 —— ⚠️ 按「包含 1 月 4 日的那一周是第 1 周」,年初年尾不会差一周
  • 一次出 1–12 个月,跨年自动接上
  • 闰年按「4 整除且非 100 整除,或 400 整除」判(1900 不是、2000 是)
  • 列宽按显示宽度对齐:中文表头「一」占两格,也能与下面的数字对齐
  • 最后一行「今天」的说明单独一行,不进网格 —— 进了会破坏对齐
  • 全部在浏览器本地完成,不联网

使用方法

  1. 输入年月(留空就是本月)
  2. 按需要切换一周的起始日、是否显示周数
  3. 要排期就填一次显示几个月
  4. 复制整块网格贴到你要用的地方

常见问题

为什么这一行的周数是上一年的 52/53 周?
因为 ISO 8601 的周数不是按自然年切的,而是按「包含 1 月 4 日的那一周是第 1 周」定的。于是 1 月 1 日到第一个周一之间那几天属于上一年的最后一周(第 52 或 53 周),12 月 31 日也可能属于下一年的第 1 周。这是国际标准的口径,排期、周报、以及 Git 之类的工具都用它 —— 用「从元旦数 7 天」的写法在年初年尾会整体差一周,两个系统一对就对不上。
一周该从周日还是周一开始?
看你和谁对齐:中文与欧洲的习惯是周一开头,北美是周日开头,而 ISO 8601 规定周一。工具把这件事做成选项而不是替你决定 —— 但要注意周数的编号始终按 ISO(周一起始)算,即使你选了周日开头。也就是说选了周日时,表里那一行可能跨越两个 ISO 周,显示的是该行周四所在的周数。
为什么今天没有在网格里高亮?
因为加一个记号(比如星号)会让那一格变成三列宽,整行往后错一格 —— 而这个工具的产物就是要粘出去还对得齐。所以今天的信息放在网格下面单独一行(日期 + ISO 周数),既不破坏对齐,也比一个记号说得多。需要看今天的日期,留空输入直接生成本月即可。
能生成很长一段时间的日历吗?
一次最多 12 个月,够覆盖一个项目周期。要更长的话分几次生成、或者按年要 —— 这个工具刻意不做「一次出十年」,那既没有可读性,也会让结果页变得很长。要算两个日期差多少天、某个节日在哪天,用「日期计算」那个工具更合适。

相关工具