日期时间格式对照表

日期时间格式对照:Unix 时间戳、ISO 8601、RFC 3339、RFC 2822 等标准格式,以及常见展示写法的含义与示例,处理时间字段时快速查阅。

原理解析

时间表示分两层:一是「绝对时刻」——时间线上唯一的点(如 Unix 时间戳 1693564800),与展示无关;二是「展示格式」——人类可读的写法,受地区、历法、时区影响。同一绝对时刻在不同地区显示为不同字符串,因此存储时优先保留绝对时刻加时区,展示时再按用户 locale 格式化。

各格式来源不同:Unix 时间戳是 1970-01-01 UTC 起的秒/毫秒,最适合计算;ISO 8601 / RFC 3339 是人类可读且机器无歧义的标准,适合 API 与日志;RFC 2822 常见于邮件与 HTTP 头。混用时务必确认单位(秒 vs 毫秒)与时区,否则会差出 1000 倍或偏移到错误时区。

格式含义示例
Unix 时间戳自 1970-01-01 UTC 起的秒数(或毫秒)1693564800
ISO 8601国际标准化组织日期时间格式2023-09-01T12:00:00Z
ISO 8601(含时区偏移)带 +08:00 等偏移的本地时间2023-09-01T20:00:00+08:00
RFC 3339ISO 8601 的严格子集,常用于 API2023-09-01T12:00:00+00:00
RFC 2822 / 1123HTTP 头常用的日期格式Fri, 01 Sep 2023 12:00:00 GMT
YYYY-MM-DD仅日期(ISO 日期)2023-09-01
YYYY/MM/DD斜杠分隔日期(中文习惯)2023/09/01
YYYY年M月D日中文长日期2023年9月1日
HH:mm:ss24 小时制时间12:00:00
hh:mm A12 小时制带 AM/PM12:00 PM
YYYY-MM-DD HH:mm:ss常用数据库 datetime2023-09-01 12:00:00
相对时间如 "3 分钟前",用于社交/日志展示3 minutes ago
季度 Qn-YYYY财季/季度表示Q3-2023
ISO 周 Www-yyyyISO 周编号W35-2023
Duration(ISO 8601)时间段表示法P1Y2M3DT4H5M6S
毫秒时间戳JavaScript Date.now() 返回值1693564800000

常见问题

Unix 时间戳是秒还是毫秒?

通常是秒(如 1693564800),但 JavaScript 的 Date.now() 与很多前端库返回毫秒(13 位)。互操作时要确认单位,必要时 ×1000 或 ÷1000 转换,否则会差出 1000 倍导致时间远到 1970 或 50000 年。

ISO 8601 和 RFC 3339 有什么区别?

RFC 3339 是 ISO 8601 的一个严格子集:要求完整的日期时间、必须带时区(Z 或 ±hh:mm)、不允许空格分隔日期与时间。写 API 时优先 RFC 3339,可读性最好。

UTC、GMT 和时区偏移 +08:00 是什么关系?

UTC 与 GMT 在日常使用中可视为等同(GMT 是时区名,UTC 是时间标准)。+08:00 表示比 UTC 早 8 小时(如中国标准时间)。存时间建议统一用 UTC(或带偏移),展示时再按用户时区转换。

数据库该存哪种时间格式?

关系型数据库优先用原生 datetime/timestamp 类型(由数据库保证时区与格式);若以字符串存储,统一用 ISO 8601/RFC 3339 并明确时区,避免 "2023-09-01 12:00" 这类无时区歧义写法。