标签必须添加datetime属性,因其唯一价值是为机器提供无歧义的ISO 8601时间信息;文本内容仅面向人类,可与datetime值完全不同。

time 标签不是装饰用的,不加 datetime 就等于没用。 它唯一可靠的价值,来自让机器(搜索引擎、屏幕阅读器、JS 脚本)能无歧义地提取时间信息。人眼看到的文本只是副产品。
为什么必须写 datetime 属性
没有 datetime 的 <time>发布于昨天</time>,对爬虫和辅助技术来说,和普通 <span></span> 没区别——“昨天”不是 ISO 8601,无法解析、无法排序、无法时区转换。datetime 是强制入口,不是可选项。
- 搜索引擎靠它识别内容新鲜度,影响搜索结果中的“发布时间”展示
- 屏幕阅读器会朗读
datetime值(如 “2026-04-05T14:59+08:00”),而不是“今天下午三点”这类模糊表达 - JS 通过
el.dateTime直接拿到标准时间字符串,避免手动 parse 文本带来的格式风险 - 值必须是合法 ISO 8601:支持
2026-04-05、14:59、2026-04-05T14:59+08:00、PT1H30M,但不能是2026/04/05或2026-04-05 14:59(缺 T)
datetime 和标签内文本可以完全不一样
这是最容易被误解的一点:二者职责分离。文本面向人,datetime 面向机器。你完全可以写:<time datetime="2026-04-05T14:59+08:00">就在刚刚</time>。
- 中文场景下,文本用“三分钟前”“下周二”很自然,但
datetime必须是固定时刻,不能写datetime="next Tuesday"(会被忽略) - 本地化友好:同一页面可对不同语言用户渲染不同文本,只要
datetime不变,结构就稳定 - 避免在文本里塞冗余信息,比如
<time datetime="2026-04-05">2026年4月5日(星期日)</time>—— 星期几由 JS 或 CSS 动态补更可靠
哪些场景真有用,哪些纯属浪费
真正值得用 <time></time> 的地方,是那些「时间信息需要被程序理解或联动」的节点。
- ✅ 文章/博客的
pubdate:配合pubdate属性(虽已废弃但仍有部分阅读器识别),明确标识文档发布时间 - ✅ 活动页的时间点:
<time datetime="2026-04-10T19:00+08:00">4月10日晚上7点直播</time> - ✅ 持续时间标注:
<time datetime="PT90M">电影时长90分钟</time>,方便聚合统计或筛选 - ❌ 纯视觉装饰时间,比如页脚“© 2026”,不用
<time></time>;用<small></small>或<footer></footer>更合适 - ❌ JS 动态生成的倒计时初始值:直接写
data-timestamp更轻量,<time></time>适合静态语义,不适合高频更新
兼容性和常见错误
所有现代浏览器都支持 <time></time>,但错误用法会让它退化为普通内联元素。
- 错误:省略
datetime,或写成datetime="2026-04-05 14:59"(缺T或时区)→ 解析失败,机器不可读 - 错误:用
datetime存非时间内容,比如datetime="v1.2.0"→ 违反语义,后续工具链可能报错 - 注意:
pubdate属性在 HTML5.2 中已被移除,不要依赖它做逻辑判断;仅作历史兼容参考 - CSS 里别给
time强制设display: block,它默认是内联元素,样式应基于上下文决定
最常被忽略的其实是持续时间写法:PT2H30M 中的 P 不能丢,T 是 time designator,不是字母 T 的随意大写——写成 pt2h30m 也能被识别,但大小写混用(如 Pt2H30m)可能在某些旧解析器中出问题。语义标签的威力,全系于那一串严格格式的 datetime 值上。

















