datetime属性必须为严格合规的iso 8601字符串,如2026-06-23或2026-06-23t10:58:00+08:00;错一个字符(如缺t、用/代替-、时区少冒号)即失效,导致datetime返回null或空字符串。

合法值只有一类:严格合规的 ISO 8601 字面量字符串
浏览器和搜索引擎不校验、不修复、不宽容。错一个字符(比如漏 T、用 / 代替 -、月份没补零、时区少冒号),document.querySelector('time').dateTime 就返回空字符串或 null,Google Rich Results Test 直接标 “Missing datePublished”。
✅ 必须遵守的硬格式规则
-
年月日必须为
YYYY-MM-DD- 正确:
2026-06-23 - 错误:
2026/06/23、2026-6-23、2026年6月23日
- 正确:
-
带时间必须用大写
T分隔,且含时分秒(推荐全写)- 正确:
2026-06-23T10:58:00+08:00 - 错误:
2026-06-23 10:58:00(缺T)、2026-06-23t10:58:00+08:00(t小写)、2026-06-23T10:58+08:00(缺秒)
- 正确:
-
时区偏移必须是
±HH:MM格式,不可缩写- 正确:
+08:00、Z(等价于+00:00) - 错误:
+8、+08、GMT+8、CST、UTC+8
- 正确:
-
持续时间必须以
P开头,符合 ISO 8601 期间表示法- 正确:
PT42M30S(42分30秒)、P3D(3天) - 错误:
42分钟30秒、3天、42:30
- 正确:
? 常见可用格式示例(直接复制可用)
仅日期(隐含当日 00:00:00 UTC):
<time datetime="2026-06-23">今天</time>本地时间带明确时区(推荐用于中文站点):
<time datetime="2026-06-23T10:58:00+08:00">现在</time>UTC 时间(适合 API、日志、跨时区系统):
<time datetime="2026-06-23T02:58:00Z">北京时间上午10:58</time>仅时间(需上下文已知日期,如课表):
<time datetime="09:00">第一节课</time>持续时间(如视频长度):
<time datetime="PT1H23M45S">1小时23分45秒</time>
⚠️ 绝对不能写的写法(哪怕看起来“能懂”)
-
<time datetime="2026-06-23 10:58">...</time>(缺T) -
<time datetime="2026-06-23T10:58+08:00">...</time>(缺秒,Safari 解析不稳定) -
<time datetime="2026/06/23">...</time>(斜杠非法) -
<time datetime="刚刚">...</time>或<time datetime="下周二">...</time>(相对时间不可验证) -
<time datetime="2026-06-23T10:58:00+08">...</time>(时区少冒号)
? 验证是否生效的最快方法
- 打开 DevTools → Elements 面板找到
<time></time>元素 - 确认
datetime属性存在,且值是上述任一合法格式 - 在 Console 输入:
document.querySelector('time').dateTime返回非空字符串(如
"2026-06-23T10:58:00+08:00")才表示成功
不复杂但容易忽略。










