pubdate属性已废弃,浏览器不解析,querySelector('time[pubdate]')恒返回null;必须用合法ISO格式的datetime属性配合语义结构和Schema.org微数据标识发布时间。

pubdate 属性不能用来标记文章发布时间——它早已被标准废弃,浏览器完全不解析,写上等于没写。
pubdate 属性为什么查不到、不起作用
-
document.querySelector('time[pubdate]')永远返回null,因为现代浏览器(Chrome/Firefox/Safari/Edge)自 2014 年起就移除了对该属性的任何解析逻辑 - W3C HTML5.3 和 WHATWG Living Standard 均明确标注
pubdate为 obsolete(已废弃),标准文档里已无定义 - 即使你手写
<time pubdate datetime="2026-08-11">今天</time>,DOM 中连这个属性名都不会出现,timeEl.hasAttribute('pubdate')返回false
datetime 是唯一必须写的属性
datetime 才是 <time> 的语义核心,机器可读性、SEO、屏幕阅读器、日历导入全靠它:
- ✅ 正确(纯日期):
<time datetime="2026-08-11">今天</time> - ✅ 正确(带时区):
<time datetime="2026-08-11T14:30:00+08:00">下午2:30</time> - ❌ 错误(斜杠分隔):
<time datetime="2026/08/11">今天</time> - ❌ 错误(缺零填充):
<time datetime="2026-8-11">今天</time> - ❌ 错误(缺
T或时区):<time datetime="2026-08-11 14:30">下午2:30</time>
注意:服务端动态生成时,别用 toLocaleDateString() 或字符串拼接——本地时区 + 非 ISO 格式极易出错;应优先用 new Date().toISOString()(返回 UTC)或严格按 ISO 8601 格式构造。
如何让机器识别“这是发布时间”而非普通时间点
没有 pubdate,靠的是上下文 + 辅助信号:
立即学习“前端免费学习笔记(深入)”;
- 把
<time>放在<article>或<header>内第一个位置,多数 CMS 和阅读器默认将其视为发布日期 - 避免在页脚、侧边栏重复放置另一个
<time>,否则可能被误判为更新时间或版权年份 - 加
aria-label="发布于 2026年8月11日"提升读屏体验(值必须与datetime一致) - 在
<head>或<article>内加 Schema.org 微数据:<meta itemprop="datePublished" content="2026-08-11">,Google Rich Results Test 明确认可
真正容易被忽略的点是:很多人以为只要套个 <time> 标签就自动获得发布时间语义,其实关键不在标签本身,而在 datetime 是否合法、是否处于合理语境、是否有辅助信号支撑。



















