datetime 属性必须严格使用 ISO 8601 格式,仅支持 YYYY-MM-DDThh:mm:ss±hh:mm 或其简化形式(如省略秒、时区),禁止斜杠、空格、短横缺失、时区缩写;标签内需另写 human-readable 文本,否则不渲染。

datetime 属性只接受 ISO 8601 格式,不是任意字符串
datetime 是 <time> 元素的属性,浏览器用它做机器可读的时间解析。它不支持中文、空格分隔、短横缺失或时区缩写(如 CST、GMT+8)——这些都会导致解析失败或被忽略。
必须严格按 YYYY-MM-DDThh:mm:ss±hh:mm 或其简化形式(如省略秒、时区)书写,且所有分隔符(-、:、T)不可省略。
-
2026-08-11T13:47:00+08:00✅ 完整带时区 -
2026-08-11T13:47✅ 允许省略秒,但T和冒号不能少 -
2026-08-11✅ 仅日期也合法(隐含 00:00:00 UTC) -
2026/08/11 13:47❌ 斜杠、空格、无T—— 浏览器不识别 -
2026-08-11 13:47:00❌ 缺少T—— 解析为无效日期
时区写法必须用 ±hh:mm,不能用 Z 或缩写
UTC 时间可用 Z 表示(等价于 +00:00),但其他时区必须显式写出偏移量,例如 +08:00。写成 +8、GMT+8、CST 都无效。
-
2026-08-11T05:47:00Z✅ 等价于 UTC 时间 -
2026-08-11T13:47:00+08:00✅ 显式东八区偏移 -
2026-08-11T13:47:00+8❌ 少了:00,不合法 -
2026-08-11T13:47:00CST❌ 浏览器无法解析时区名
JavaScript new Date() 能解析 datetime 值,但别依赖它自动补全
虽然 new Date('2026-08-11T13:47') 通常能成功构造对象,但不同浏览器对不完整格式(如缺时区)的默认处理不一致:Chrome 当作本地时间,Firefox/Safari 可能当作 UTC。
立即学习“前端免费学习笔记(深入)”;
- 若
datetime="2026-08-11T13:47",没写时区 → 解析结果取决于用户本地时区设置 - 若需确定性行为,务必带上时区偏移(
+08:00)或用Z - 服务端生成时,建议统一用
toISOString()输出(返回带Z的 UTC 字符串)
常见错误:把 datetime 当作显示内容,忘了 human-readable 文本要另写
datetime 是纯数据属性,它本身不渲染。显示给用户的文本必须写在 <time> 开始和结束标签之间,否则页面上什么都不会出现。
<time datetime="2026-08-11T13:47+08:00">2026年8月11日 下午1点47分</time>
上面这行才对:机器读 datetime,人看标签内文字。漏掉标签内文本,页面就空着;只写 datetime 不写内容,等于没展示。
时区偏移和日期格式细节容易被跳过,但一旦出错,<time> 就退化为普通内联元素,语义丢失,辅助技术也无法正确播报时间。



















