ISO-8601 全称为 国际标准化组织 8601 号标准(International Organization for Standardization 8601),是一套由国际标准化组织制定、用于统一表示日期和时间的规范。其核心目标是解决全球不同地区日期时间格式不统一的问题(如“MM/DD/YYYY”与“DD/MM/YYYY”的混淆),提供一套通用、无歧义、机器可解析的表示方法,广泛应用于计算机系统、数据交换、通信协议等场景。
简单的说,ISO-8601 标准统一了日期、时间的表示,避免了各国出现日期、时间表示混乱的问题。下面将简单介绍该标准中定义的日期、时间和两者组合的表示格式。
ISO-8601 定义了多种日期、时间及组合格式,以下是最常用的核心类型:
ISO 8601 规定日期的基础格式为 “年-月-日”(YYYY-MM-DD),各部分需满足固定位数要求,避免歧义:
组成部分 | 含义 | 格式要求 | 示例 |
YYYY | 4 位年份 | 必须为 4 位数字(含前导零) | 2024,注意:不允许简写为“24”(避免跨世纪歧义) |
MM | 2 位月份 | 01(1 月)~12(12 月) | 05,注意:1 月需写 “01”,不可写 “1” |
DD | 2 位日期 | 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),可根据精度需求省略秒或分,同时支持毫秒、微秒等更高精度扩展:
组成部分 | 含义 | 格式要求 | 示例 | 说明 |
HH | 2 位小时 | 00(午夜)~23(23 点) | 14 | 下午 2 点需写 “14”,不可写 “2” |
MM | 2 位分钟 | 00~59 | 30 | 5 分钟需写 “05”,不可写 “5” |
SS | 2 位秒 | 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