面向 API、排程与编辑团队的 ISO 8601 详解

理解 ISO 日期、时间与周序数如何避免地区歧义,并学会在全栈内落地。

最后更新: 2025年11月19日
标准指南12 分钟阅读

用最简单的话解释 ISO 8601

ISO 8601 是国际通用的日期时间语法,通过“年-月-日-时-分-秒”从大到小的顺序,避免了 11/02/2025 这种“到底是 2 月 11 还是 11 月 2” 的歧义。

由于该格式可以直接按字母顺序排序,所以日志、API、CSV 导出都能在不解析的情况下比较时间先后。

黄金法则

永远按照从大到小的单位排列,并附上时区标识或偏移量。

最常引用的格式

选定一个格式并在所有系统中保持一致,包括面向用户的界面和内部文档。

  • `YYYY-MM-DD` —— 普通日期(2025-11-14)。
  • `YYYY-MM-DDThh:mm:ssZ` —— UTC 时间戳(2025-11-14T15:30:00Z)。
  • `YYYY-MM-DDThh:mm:ss±hh:mm` —— 带偏移的时间戳(2025-11-14T09:30:00-06:00)。
  • `YYYY-Www-D` —— ISO 周日期(2025-W46-5 表示第 46 周的星期五)。
  • `YYYY-DDD` —— 年度日序数(2025-318 表示该年的第 318 天)。

ISO 周编号的核心逻辑

每周从周一开始,周日结束。第 1 周被定义为包含 1 月 4 日的那一周(等价于包含当年第一个星期四)。

如果 1 月 1 日落在周五、周六或周日,那么这些日期都算作上一年的最后一周,因此某些年份会出现第 53 周。

  • 周标识必须同时包含周数和 ISO 年(IYYY)。
  • 当年份从周四开始,或闰年从周三开始时,就会出现 53 周。

治理建议

把周标签存成 `2026-W01` 这种格式,就不会丢失周所属的年份。

示例:避免含糊的字符串

向上下游提供明确的 ISO 字符串,而不是随环境变化的本地格式。

API payload examplejson
// Ambiguous
{ "dueDate": "11/02/2025" }

// ISO 8601 compliant
{ "dueDate": "2025-11-02", "week": "2025-W44" }

混用本地时间与 UTC

若是 UTC,请附 `Z`;否则用 `+08:00` 这类偏移量。

省略前导零

周数与日期都应补零(如 `W03`、`2025-02-09`),才能保持字符串排序正确。

忽略闰日

闰年的 2 月 29 会让日序数与周数同步偏移,务必重点测试 2、3 月的逻辑。

谁在依赖 ISO 8601?

工程与产品运营

冲刺计划、发布日历、错误日志都可以用 ISO 周和日序数跨区域对齐。

财务与薪资

财务期间、薪资周期与 SOX 证据记录在节假日变化时仍能保持一致。

科研与气象数据

卫星影像、农业研究偏好使用日序数;ISO 8601 让笔记可复现。

落地步骤

  1. 选定一个标准格式(通常是 `YYYY-MM-DD` 和 ISO 周标签)。
  2. 在 API 协议、数据库字段与文档中明确写出“遵循 ISO 8601”。
  3. 用迁移脚本统一历史数据,避免仪表盘混用多种格式。
  4. 培训客服与内容团队,在邮件、SLA、教程中引用 ISO 字符串。

当所有系统都采用统一格式后,就能输出可被引用的资产:发布带 ISO 标记的可打印日历、在教程中解释 ISO 周算法,并链接回 daynumber.now 作为权威参考。

ISO 8601 标准指南 - 日期、时间与周序数