ISO-8601 标准

ISO-8601 全称为 国际标准化组织 8601 号标准(International Organization for Standardization 8601),是一套由国际标准化组织制定、用于统一表示日期和时间的规范。其核心目标是解决全球不同地区日期时间格式不统一的问题(如“MM/DD/YYYY”与“DD/MM/YYYY”的混淆),提供一套通用、无歧义、机器可解析的表示方法,广泛应用于计算机系统、数据交换、通信协议等场景。

简单的说,ISO-8601 标准统一了日期、时间的表示,避免了各国出现日期、时间表示混乱的问题。下面将简单介绍该标准中定义的日期、时间和两者组合的表示格式。

 

核心格式表示

ISO-8601 定义了多种日期、时间及组合格式,以下是最常用的核心类型:

日期表示

ISO 8601 规定日期的基础格式为 “年-月-日”(YYYY-MM-DD),各部分需满足固定位数要求,避免歧义:

组成部分含义格式要求示例
YYYY4 位年份必须为 4 位数字(含前导零)2024,注意:不允许简写为“24”(避免跨世纪歧义)
MM2 位月份01(1 月)~12(12 月)05,注意:1 月需写 “01”,不可写 “1”
DD2 位日期01~31(需符合当月天数)18,注意:5 日需写“05”,不可写“5”

下面是日期的常用表示格式:

格式类型

格式示例

说明

完整日期

2024-05-20

年-月-日(4 位年,2 位月 / 日,分隔符“-”)

省略分隔符日期

20240520

无分隔符的紧凑格式,机器解析更高效

年-月

2024-05

仅表示年份和月份(无具体日期)

2024

仅表示年份

注意:月份和日期必须用2 位数字表示(如 1 月写作 “01”,5 日写作 “05”),避免 “2024-1-5” 这类不规范格式。

常见变体格式

  • 基础紧凑格式:省略分隔符“-”,写作 YYYYMMDD(如 20240518),适用于文件命名(如 “报告_20240518.pdf”)或系统内部存储,无歧义且节省字符。

  • 周日期格式:按“年-周数-星期几” 表示(YYYY-Www-D),适用于按周统计的场景(如生产计划、考勤):

    • ww:2 位周数(01~53,每年第 1 周定义为 “包含该年第一个周四的周”);

    • D:1 位星期几(1 = 周一,7 = 周日);

    • 示例:2024 年第 20 周的周三,写作 2024-W20-3 或紧凑格式 2024W203。

  • ordinal date(ordinal 日期):按 “年-年内天数” 表示(YYYY-DDD),适用于连续天数统计(如项目工期):

    • DDD:3 位年内天数(001~365,闰年为 366);

    • 示例:2024 年第 100 天,写作 2024-100 或 2024100;

 

时间表示

ISO 8601 时间基于 24 小时制,基础格式为 “时:分: 秒”(HH:MM:SS),可根据精度需求省略秒或分,同时支持毫秒、微秒等更高精度扩展:

组成部分含义格式要求示例说明
HH2 位小时00(午夜)~23(23 点)14下午 2 点需写 “14”,不可写 “2”
MM2 位分钟00~59305 分钟需写 “05”,不可写 “5”
SS2 位秒00~59(含闰秒时为 60)45可省略(如仅需 “时:分”)
.fff毫秒(可选)1~3 位数字.123紧跟秒后,用小数点分隔
.fffff微秒(可选)4~6 位数字.123456更高精度场景(如科研)

下面是时间表示常见格式:

格式类型

格式示例

说明

时-分-秒

14:30:45

时分: 秒(2 位时 / 分 / 秒,分隔符 “:”)

时-分

14:30

仅表示时和分(无秒)

带小数秒

14:30:45.123

秒后可加小数(支持毫秒、微秒、纳秒)

省略分隔符时间

143045

无分隔符的紧凑格式(如1430表示 14:30)

 

日期时间组合

当需要同时表示日期和时间时,ISO 8601 规定用大写字母“T”分隔日期和时间(避免与数字混淆),格式为 YYYY-MM-DDTHH:MM:SS,示例:

  • 完整格式:2024-05-18T14:30:45.123(2024年5月18日 14时30分45秒123毫秒)

  • 紧凑格式:20240518T143045(省略分隔符和毫秒)

注意,“T”是标准分隔符,不可用空格、逗号等其他符号替代(部分系统支持用空格,但非标准,可能导致兼容性问题)。

下面是一些示例:

格式示例

说明

2024-05-20T14:30:45

完整日期 + 完整时间(最常用)

20240520T143045.123

紧凑格式 + 毫秒精度

2024-05-20T14:30

完整日期 + 时:分(无秒)

  

时区与偏移量

由于不同地区存在时区差异(如北京为东 8 区,伦敦为 0 时区),ISO-8601 要求明确标注时区,避免“同一时间戳在不同地区含义不同” 的问题。

ISO-8601 支持表示带时区的时间,核心是通过 “UTC 偏移量” 或 “时区标识符” 明确时间对应的地理区域:

  • UTC 偏移量格式:在时间后加“±HH:MM”或“±HHMM”(UTC 本身用“Z”表示,即“Zulu 时间”)。例如:2024-05-20T14:30:45+08:00(表示东八区时间,如北京/上海)、2024-05-20T06:30:45Z(表示UTC 时间)。

  • 时区标识符格式:使用 IANA 时区标识符(如“Asia/Shanghai”),需配合偏移量,示例:2024-05-20T14:30:45+08:00[Asia/Shanghai]。

时区与偏移量主要有 3 种表示方式:

时区类型格式说明示例适用场景
UTC 时间末尾加 “Z”(代表 “Zulu Time”,即 UTC 标准时)2024-05-18T14:30:45Z 全球统一时间场景(如航空、互联网)
时区偏移(东)用 “+HH:MM” 表示(东几区,比 UTC 快)2024-05-18T22:30:45+08:00    北京(东 8 区)时间,比 UTC 快 8 小时    
时区偏移(西)用 “-HH:MM” 表示(西几区,比 UTC 慢)2024-05-18T06:30:45-08:00洛杉矶(西 8 区)时间,比 UTC 慢 8 小时    

  

时间间隔与周期

ISO-8601 还支持表示“时间段”和“重复事件”,适用于日程安排、项目周期等场景:

时间间隔

时间间隔表示两个时间点之间的持续时间,格式为“开始时间/结束时间”,例如:2024-05-20T09:00:00/2024-05-20T12:00:00(2024年5月20日9点到12点)。

格式为:PnYnMnDTnHnMnS,其中:

  • P:必选前缀,代表 “Period(周期)”;

  • T:分隔日期部分(年 / 月 / 日)和时间部分(时 / 分 / 秒);

  • n:数字(可带小数,如 P1.5Y 表示 1 年 6 个月)。

示例:

  • P2Y3M10D:2 年 3 个月 10 天;

  • PT5H30M:5 小时 30 分钟;

  • P1Y2M5DT3H:1 年 2 个月 5 天 3 小时。

周期

表示重复的时间间隔,格式为:R[n]/<开始时间>/<间隔>/<结束时间>,其中:

  • R:必选前缀,代表 “Recurring(重复)”;

  • [n]:可选,重复次数(省略则表示无限重复);

  • <开始时间>:符合 ISO 8601 的日期 / 时间;

  • <间隔>:符合上述 “时间间隔” 格式;

  • <结束时间>:可选,重复的截止时间。

示例:

  • R5/2024-06-01T09:00/PT1W:从 2024 年 6 月 1 日 9 点开始,每周重复 1 次,共重复 5 次;

  • R/2024-01-01/P1M/2024-12-31:从 2024 年 1 月 1 日开始,每月重复 1 次,直到 2024 年 12 月 31 日结束。

  

参考资料

ISO - ISO 8601 — Date and time format

 

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号