time标签的核心作用是为机器提供无歧义、可解析、可计算的时间信息,需通过符合ISO 8601标准的datetime属性实现,缺失该属性则语义失效。

time 标签的语义化作用
- 向搜索引擎传递发布时间、活动截止日等关键时间信号,影响内容新鲜度排序和富媒体结果展示
- 让屏幕阅读器准确朗读具体日期时间(如“二零二六年六月二十三日”,而非“今天”或“刚发布”)
- 支持结构化数据提取,例如 Google Rich Results Test 能识别
datePublished字段 - 为 JavaScript 提供标准化时间字符串,避免用正则或
Date.parse()解析中文带来的兼容性风险
没有 datetime 属性的 <time> 等同于 <span>,语义完全丢失。
datetime 属性必须符合 ISO 8601 标准格式
浏览器和爬虫只认五种合法格式,缺一字符即失效:
-
纯日期:
2026-06-23(年月日均两位,不可写2026/6/23或2026-6-23) -
纯时间:
14:30或14:30:00(仅限上下文已明确日期时使用,单独用价值低) -
日期+时间(推荐带时区):
2026-06-23T14:30:00+08:00(T 不可省略,时区偏移必须含冒号) -
UTC 时间:
2026-06-23T06:30:00Z(Z 是字面量,大写,不可写成z或+00:00) -
周期型:
2026-W25-2(第 25 周周二)、2026-06(2026 年 6 月)
常见非法写法:
-
2026-06-23 14:30(缺 T) -
2026-06-23T14:30+08(时区少冒号) -
2026年6月23日(含中文,机器无法解析) -
next Monday(非固定值,不被识别)
显示文本与 datetime 值需逻辑一致
- ✅
<time datetime="2026-06-23">今天</time>—— 页面生成时确实为当天,且动态更新 - ✅
<time datetime="2026-06-23T10:00+08:00">上午10点</time> - ❌
<time datetime="2026-06-23">下周二</time>—— 2026-06-23 是周一,逻辑矛盾 - ❌
<time datetime="2026-06-23">昨天</time>—— 静态值无法随页面刷新保持语义对齐
前端动态生成 datetime 的安全做法
- 优先用
new Date().toISOString()获取 UTC 时间字符串(如"2026-06-23T15:30:45.123Z"),截去毫秒后直接赋值 - 如需本地时区带偏移,不要手拼,改用
Intl.DateTimeFormat或可靠库(如date-fns/formatISO) - 绝对避免
getFullYear() + '-' + getMonth()+1这类手拼方式——漏补零、时区错位、夏令时翻车
不复杂但容易忽略

















