time标签必须带ISO 8601格式的datetime属性才有效,常见错误包括斜杠、缺零、缺T或时区;正确格式仅三类:仅日期、带时区日期时间、持续时间;时区须显式声明,推荐用toISOString()生成UTC时间。

time 标签必须带 datetime 属性才真正起作用,不写等于白套一层标签。
datetime 属性必须用 ISO 8601 格式,不能手写中文或拼接字符串
浏览器和搜索引擎只认标准格式,填错一个字符(比如用/代替-、漏掉前导零、缺T或时区)就会被当作无效值跳过。常见错误包括:
-
datetime="2026/05/25"—— 斜杠非法,new Date("2026/05/25")在 Safari 中可能返回Invalid Date -
datetime="2026-5-25"—— 月/日缺零,必须是2026-05-25 -
datetime="2026-05-25 14:30"—— 缺T分隔符,也缺时区,解析结果不可控 -
datetime="2026年5月25日"—— 中文完全不被识别
正确写法只有三类核心格式:
- 仅日期:
datetime="2026-05-25" - 日期时间(推荐带时区):
datetime="2026-05-25T15:12:00+08:00"或 UTC:datetime="2026-05-25T07:12:00Z" - 持续时间:
datetime="PT2H30M"(表示 2 小时 30 分钟)
显示文本和 datetime 值可以不同,但不能逻辑矛盾
time 的本质是分离「人看的」和「机器读的」。你可以写 <time datetime="2026-05-25">今天</time>,但要注意:
立即学习“前端免费学习笔记(深入)”;
- 静态页面中写
<time datetime="2026-05-25">昨天</time>是危险的——2026-05-25 是星期一,“昨天”是星期日,语义错位 - 相对时间(如“3小时前”“还剩2天”)必须靠 JS 动态更新文本内容,
datetime值本身要保持绝对、固定、可验证 - 别把模糊词塞进
datetime,比如datetime="soon"或datetime="next week"—— 解析器直接忽略
服务端输出绝对时间戳 + 前端用 Intl.DateTimeFormat 渲染文案,是最稳妥的组合。
时区必须显式声明,否则跨环境会出偏差
没写时区的 datetime="2026-05-25T15:12:00",不同工具解释方式不一致:
- 浏览器默认按用户本地时区解释
- Google 富摘要可能按 UTC 处理
- CDN 缓存后被海外爬虫抓取,可能解析成错的 UTC 时间
所以:
- 用本地时间就写偏移量:
datetime="2026-05-25T15:12:00+08:00" - 用 UTC 就写
Z:datetime="2026-05-25T07:12:00Z" - 生成时优先调用
new Date().toISOString(),它自动返回带Z的 UTC 字符串,最安全
最容易被忽略的是:你在本地开发时看着全对,部署后才发现时间在东京和旧金山页面上差了八小时。



















