time标签必须带合法iso 8601格式的datetime属性才具机器可读性,否则仅是普通容器;时区须显式声明,显示文本须与datetime逻辑一致,严禁用于非时间内容。

time 标签必须带 datetime 属性才具机器可读性,否则只是普通内联容器;所有时间语义化效果都依赖该属性的 ISO 8601 字符串是否合法、无歧义。
datetime 属性必须严格符合 ISO 8601 格式
浏览器和爬虫不校验 datetime 值,但解析失败就等于没写。填错一个字符(比如斜杠、空格、缺零、漏 T)会导致结构化数据提取失败、屏幕阅读器跳过、Google Rich Results Test 忽略该节点。
- ✅ 正确:
<time datetime="2026-05-26">今天</time>(纯日期,零填充) - ✅ 正确:
<time datetime="2026-05-26T16:01:00+08:00">现在</time>(含T、秒、显式时区) - ✅ 正确:
<time datetime="PT1H30M">1小时30分钟</time>(持续时间,P开头) - ❌ 错误:
<time datetime="2026/05/26">今天</time>(斜杠非法) - ❌ 错误:
<time datetime="2026-5-26T16:01">现在</time>(月/日/时/分缺零) - ❌ 错误:
<time datetime="2026-05-26 16:01:00">现在</time>(缺T,缺时区)
显示文本可以自由定制,但不能和 datetime 逻辑冲突
time 的核心价值是分离「人看的文案」和「机器读的时间戳」。你可以写“立夏”“早九点”“距今还有 3 天”,但前提是 datetime 值真实、确定、可验证。
- ✅ 合法:
<time datetime="2026-05-05">立夏</time>(上下文明确指该节气日期) - ✅ 合法:
<time datetime="2026-05-26T16:01:00+08:00">刚刚</time>(服务端静态输出 + 前端 JS 动态更新文案,datetime不变) - ❌ 危险:
<time datetime="2026-05-26">明天</time>(2026-05-26 是周二,“明天”是周三,语义矛盾) - ❌ 危险:
<time datetime="2026-05-26">昨天</time>(页面部署后,“昨天”持续错位,机器无法推断相对性)
时区必须显式声明,否则跨环境解析结果不可控
不带时区的 datetime(如 "2026-05-26T16:01:00")在不同工具中解释规则不一:Chrome 默认本地时区,Google 可能按 UTC 解析,Safari 对无时区字符串的 new Date() 行为也不稳定。
- ✅ 推荐:
<time datetime="2026-05-26T08:01:00Z">UTC 上午 8:01</time>(Z明确表示 UTC) - ✅ 推荐:
<time datetime="2026-05-26T16:01:00+08:00">北京时间下午 4:01</time>(显式偏移) - ❌ 避免:
<time datetime="2026-05-26T16:01:00">下午 4:01</time>(无时区,语义模糊,CDN 缓存或海外爬虫抓取时易偏移)
不要用 time 标签包裹非时间类内容
time 是强语义标签,只适用于时间点、时间段、持续时间。滥用会干扰结构化数据提取和辅助技术播报。
- ❌ 禁止:
<time datetime="v2.3.1">v2.3.1</time>(版本号不是时间) - ❌ 禁止:
<time datetime="123">#123</time>(编号不是时间) - ❌ 禁止:
<time datetime="¥99">¥99</time>(价格不是时间) - ✅ 正确:
<time datetime="PT2H30M">2小时30分钟</time>(持续时间合法)
最容易被忽略的是:即使你在本地开发时看到“对”,只要 datetime 缺时区、格式松散、或与文案逻辑脱钩,一旦页面被 CDN 缓存、被 Google 抓取、或被海外用户访问,时间信息就会失效或错位——这不是样式问题,是语义根基的崩塌。











