time 标签的 datetime 属性必须使用 ISO 8601 标准格式,如“2024-03-15”或“2024-03-15T15:30:00Z”,禁止中文、口语化或缺零填充;仅当显示文本与机器可读时间不一致时才必须设置,否则可省略但显式写出更稳妥。

time 标签的 datetime 属性必须用标准格式,不能写中文或口语化时间
浏览器和搜索引擎只认 ISO 8601 格式,datetime 值一旦写错,语义化就失效——既不被屏幕阅读器正确朗读,也不被结构化数据工具识别。
常见错误包括:datetime="2024年3月15日"、datetime="下午3点"、datetime="2024-3-15"(缺零填充)。
-
datetime必须是完整、无歧义的 ISO 8601 字符串:年份 4 位、月份/日期/小时/分钟均两位,用-和:分隔 - 日期可单独用:
datetime="2024-03-15"(表示当天 00:00:00 UTC) - 带时间必须含时区信息,推荐用
Z表示 UTC:datetime="2024-03-15T15:30:00Z" - 本地时间可写偏移量,如北京时间:
datetime="2024-03-15T15:30:00+08:00"(注意+不是+)
什么时候该用 datetime,什么时候可以省略?
只有当显示文本和机器可读时间不一致时,才必须加 datetime。否则浏览器会自动从文本中解析(但非常有限且不可靠)。
例如:<time>2024-03-15</time> 理论上能被部分工具识别,但 <time datetime="2024-03-15">昨天</time> 才真正实现语义对齐。
将 Markdown 文章转换为微信公众号兼容的纯 HTML 格式。当用户要求"转成微信格式"、"生成公众号文章 HTML"、"排版到微信草稿箱"、"微信粘贴格式"时触发。输出带内联样式的纯 HTML,微信编辑器可直接渲染,无需额外适配。支持标题、段落、列表、粗体、行内代码、表格、引用块、代码块、配图的完整转换。
立即学习“前端免费学习笔记(深入)”;
- 显示“发布于昨天”,但需要机器知道确切日期 → 必须设
datetime - 显示“2024-03-15”,且格式完全标准 →
datetime可省,但显式写出更稳妥 - 显示“三月十五日”或“15/03/2024” → 必须设
datetime,否则无法解析
JavaScript 动态生成 datetime 值要注意时区陷阱
用 new Date().toISOString() 最安全,它返回 UTC 时间字符串,结尾带 Z,直接赋给 datetime 即可。
别用 toLocaleDateString() 或拼接字符串——容易漏零、混本地时区、缺秒或时区标识。
- ✅ 推荐:
el.dateTime = new Date().toISOString()(输出如"2024-03-15T07:22:34.123Z") - ❌ 避免:
date.getFullYear() + '-' + (date.getMonth()+1) + '-...'(手动拼接易出错) - ⚠️ 注意:
new Date().toJSON()和toISOString()行为一致,但前者语义模糊,建议用后者
验证 datetime 是否生效的简单方法
不用装插件,打开浏览器开发者工具,在 Elements 面板里右键 <time></time> 元素 → “Inspect”,确认 datetime 属性值存在且格式合法;再用屏幕阅读器(如 NVDA 或 VoiceOver)朗读,听是否读出具体年月日时间而非“time 标签”。
- Google 结构化数据测试工具(已并入 Rich Results Test)能检测
time是否被识别为datePublished等字段 - Chrome 中按
Ctrl+Shift+I→ Console 输入document.querySelector('time').dateTime,看返回值是否为期望字符串 - 特别注意空格和不可见字符:复制粘贴时可能混入全角符号或 BOM,导致解析失败
datetime 值往往来自后端 API 或 CMS 输出,最容易被忽略的是时区一致性——前端渲染时没做转换,直接把数据库存的本地时间字符串塞进去,结果标记的时间比真实发布时间早或晚了若干小时。


















