国际标准 ISO 8601 详解
ISO 8601 是由国际标准化组织(ISO)制定的日期和时间表示法的国际标准,旨在提供清晰明确的日期和时间格式,避免不同地区和文化间的混淆。
核心原则
- 从大到小排序:时间单位按年、月、日、时、分、秒顺序排列
- 固定位数:每个时间单位使用固定位数表示(年份4位,其他2位)
- 24小时制:使用24小时制而非12小时制
- 时区标识:明确标识时区信息
- 无歧义:避免使用可能引起混淆的符号和格式
日期表示法
基本格式
- 年:
YYYY
(4位数字) - 年-月:
YYYY-MM
- 完整日期:
YYYY-MM-DD
- 周表示法:
YYYY-Www
或YYYY-Www-D
示例:2025年6月17日可表示为:
2025-06-17
2025-W25-2
(2025年第25周的星期二)
周和日期
- 每周从星期一开始(星期一=1,星期日=7)
- 每年的第一周包含该年第一个星期四的那一周
- 周数范围:01-53
时间表示法
基本格式
- 时:
hh
- 时:分:
hh:mm
- 完整时间:
hh:mm:ss
- 带小数秒:
hh:mm:ss.sss
示例:下午2点30分45秒表示为:
14:30:45
14:30:45.000
日期时间组合
标准格式
日期和时间之间用大写字母"T"连接:
YYYY-MM-DDThh:mm:ss
示例:2025年6月17日下午2点30分:
2025-06-17T14:30:00
时区表示法
基本格式
- UTC时间:在时间末尾加"Z"
2025-06-17T14:30:00Z
- 时区偏移:
±hh:mm
或±hhmm
或±hh
- 北京时间(UTC+8):
2025-06-17T14:30:00+08:00
- 纽约时间(UTC-4):
2025-06-17T14:30:00-04:00
- 北京时间(UTC+8):
时间段表示法
格式
以"P"开头,时间单位用字母标识:
P[n]Y[n]M[n]DT[n]H[n]M[n]S
- 其中:Y=年,M=月,D=日,H=时,M=分,S=秒
示例:
- 1年2个月3天4小时:
P1Y2M3DT4H
- 15分钟:
PT15M
- 3天12小时:
P3DT12H
时间间隔表示法
格式
开始时间/结束时间
或 开始时间/持续时间
或 持续时间/结束时间
示例:
- 2025年会议时间:
2025-06-17T09:00:00/2025-06-17T17:00:00
- 2小时会议:
2025-06-17T14:00:00/PT2H
在Python中的应用
Python的datetime
模块原生支持ISO 8601格式:
from datetime import datetime, timezone, timedelta# 生成ISO格式字符串
now = datetime.now(timezone.utc)
iso_str = now.isoformat() # '2025-06-17T06:30:45.123456+00:00'# 简化格式(去除微秒和时区)
simple_iso = now.replace(microsecond=0).isoformat() # '2025-06-17T06:30:45+00:00'# 解析ISO格式字符串
dt = datetime.fromisoformat("2025-06-17T14:30:00+08:00")# 生成周表示法
year, week, weekday = dt.isocalendar()
week_str = f"{year}-W{week:02d}-{weekday}" # '2025-W25-2'# 时间段计算
duration = timedelta(days=3, hours=12)
duration_iso = "P3DT12H" # ISO表示
实际应用场景
- 数据交换:JSON、XML等数据格式中的日期时间表示
- 日志记录:标准化日志时间戳
- 国际协作:跨时区的会议安排
- 科学数据:实验数据的精确时间记录
- 文件命名:按时间排序的文件命名
与其他格式对比
格式类型 | 示例 | 问题 |
---|---|---|
美国格式 | 06/17/2025 | 与欧洲格式混淆(月/日 vs 日/月) |
欧洲格式 | 17/06/2025 | 与美国格式混淆 |
中文格式 | 2025年6月17日 | 不便排序和解析 |
ISO 8601 | 2025-06-17 | 无歧义,便于排序和解析 |
最佳实践
- 在系统间交换数据时始终使用ISO 8601格式
- 存储时间时包含时区信息
- 使用
T
分隔日期和时间(而非空格) - 优先使用完整格式(包含秒)
- 在需要排序的场景使用基本格式(无分隔符):
YYYYMMDDThhmmss
ISO 8601通过其严谨的设计,解决了日期时间表示中的歧义问题,成为现代计算机系统和国际交流中日期时间表示的事实标准。