HTML 的 `<time>` 元素和 datetime 属性怎么做 SEO/可访问性

域名注册
域名注册 初级会员超兽战士 👑年卡会员
发布于 2026-10-08 18:43 ·2 浏览 ·0 回复

结论:<time> 元素和它的 datetime 属性不是排名因素,也不会自动让屏幕阅读器读得更清楚——它的唯一价值是把「人看得懂的日期文本」和「机器能解析的标准格式」同时写在一处,本质是语义化 + 结构化数据的低成本补充。

<time> 元素和 datetime 属性到底解决什么问题

<time> 是 HTML5 引入的行内语义元素,用来标记一个时间点或一段时长;datetime 属性提供机器可读的等价写法,元素内的可见文本则给人看。两者分工明确:人读文本、机器读属性。

以「2024年3月15日」为例,正确写法是:

<time datetime="2024-03-15">2024年3月15日</time>

浏览器不会因为这个标签改变任何视觉呈现,<time> 也没有默认的 ARIA role。它的收益发生在标签之外:爬虫、RSS 阅读器、聚合器、AI 抓取管道解析时,不用去猜「3/15」到底是 3 月 15 日还是 15 月 3 日。

datetime 属性要写成什么格式才有效

结论:datetime 只接受规范定义的标准格式,写「2024年3月15日」或「March 15, 2024」都是无效值,HTML 校验器会直接报错,解析器会忽略这个属性。

可用的格式包括:

  • YYYY-MM-DD:完整日期,如 2024-03-15
  • YYYY-MM:年月,如 2024-03
  • YYYY:年份
  • YYYY-Www:周,如 2024-W11
  • HH:MM 或 HH:MM:SS:时间,如 14:30:00
  • YYYY-MM-DDTHH:MM:本地日期时间,如 2024-03-15T14:30
  • YYYY-MM-DDTHH:MM+08:00:带时区偏移的全局时间
  • PT2H30M:持续时间

如果不写 datetime 属性,元素内的文本内容本身必须也是上述标准格式之一,否则属于无效用法。旧模板里常见的 pubdate 属性早已从规范中删除,现在写上只会产生无效 HTML,应改用 <time> 配合 itemprop="datePublished" 或 JSON-LD。

<time> 能提升 SEO 排名吗

结论:不能。<time> 不是 Google 的排名信号,Google 官方对日期相关的要求写在 Article 结构化数据的 datePublished 和 dateModified 字段上,且目前推荐用 JSON-LD 提交,而不是 microdata。

但这不代表它没用。它有三个实际收益:一是让页面日期在各类抓取管道里零歧义,避免被误判成别的数字;二是和 JSON-LD 里的 datePublished 保持一致时,可以互相印证,减少「页面显示日期与结构化数据不符」的警告;三是成本极低,一行属性的事,没有维护负担。

要特别注意:不要用 <time> 包裹「3 天前」「昨天」这类相对时间。页面被缓存、被快照、被 AI 索引后,相对时间会过期失效,读者看到的和内容实际情况矛盾。如果一定要相对时间,务必在 datetime 里给绝对时间:

<time datetime="2024-03-15T14:30+08:00">3 天前</time>

可访问性上,<time> 真的有用吗

结论:对屏幕阅读器的朗读行为影响很小,NVDA、JAWS 大多按普通文本朗读 <time> 内容,不会因为标签本身改变读法。真正决定可访问性的是可见文本的写法。

所以可访问性的重点有三条:

第一,可见文本必须自然完整,不要只写 03/15 或 15.03,这种写法在美式和欧式习惯下含义冲突,读屏用户更难从上下文推断。写成「2024年3月15日」最稳妥。

第二,涉及具体时刻时,可见文本里要写出时区,datetime 里用 +08:00 这样的偏移量明确表达。线上会议、直播预告这类内容,跨时区误解是真实痛点。

第三,不要给 <time> 加 aria-label 去重复或覆盖内容。<time> 内容已经是纯文本,再包一层 ARIA 只会让朗读结果和可见文本不一致,反而违反 WCAG 的「名称与可见标签一致」原则。

一份可以直接抄的模板

结论:把可见文本、datetime、结构化数据三者的日期写成同一个值,是最稳的实践。

<article>
  <h1>文章标题</h1>
  <p>
    <time datetime="2024-03-15T14:30+08:00" itemprop="datePublished">
      2024年3月15日 14:30(北京时间)
    </time>
  </p>
  <p>正文……</p>
</article>

如果站点已经在 <head> 里输出 JSON-LD,就保持 microdata 和 JSON-LD 的日期字符串完全一致,改版时同步更新,不要只改一处。

常见错误清单

把人类格式塞进 datetime;用 <time> 标记非时间的数字(阅读量、点赞数不是时间,别滥用);写相对时间却不给绝对时间;时区信息只存在于编辑脑子里;microdata 与 JSON-LD 日期不一致;沿用已废弃的 pubdate。

总结一句话:<time datetime> 是给机器看的格式声明,不是 SEO 捷径,也不是无障碍补丁;把它当成「日期必须机器可读」这条基础规范来执行,配合可见文本自然完整、结构化数据保持一致,就已经做到位了。

版权声明:本文来自 GJ站长论坛《HTML 的 `<time>` 元素和 datetime 属性怎么做 SEO/可访问性》
原文链接:https://www.gj0.com/thread-1104.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~