HTML 的 `<time>` 元素和 datetime 属性怎么做 SEO/可访问性
结论:<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-15YYYY-MM:年月,如2024-03YYYY:年份YYYY-Www:周,如2024-W11HH:MM或HH:MM:SS:时间,如14:30:00YYYY-MM-DDTHH:MM:本地日期时间,如2024-03-15T14:30YYYY-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 捷径,也不是无障碍补丁;把它当成「日期必须机器可读」这条基础规范来执行,配合可见文本自然完整、结构化数据保持一致,就已经做到位了。
原文链接:https://www.gj0.com/thread-1104.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。