del标签的datetime属性必须为ISO 8601格式并含时区信息,如“2024-03-15T14:30:00Z”或“2024-03-15T14:30:00+08:00”,否则无效;该属性不可省略、不自动推断、不影响渲染,仅用于语义和可访问性。

del 标签的 datetime 属性必须是 ISO 8601 格式时间字符串
浏览器只认标准格式,写 "2024-03-15" 或 "2024-03-15T14:30" 都会失败,必须带完整时区信息或显式声明为本地时间(用 Z 或 +08:00)。常见错误是直接填年月日、中文日期、时间戳数字,这些全被忽略,datetime 属性看似存在,实际不生效。
正确写法只有两种:
-
datetime="2024-03-15T14:30:00Z"(UTC 时间) -
datetime="2024-03-15T14:30:00+08:00"(东八区本地时间)
不设置 datetime 时浏览器默认不记录删除时间
很多开发者以为只要用了 <del>,语义上就“自动带时间”,其实不是。datetime 是可选属性,不写就是空值,辅助技术(如屏幕阅读器)和搜索引擎不会推断或补全时间。它不像 <time> 标签那样有隐式解析逻辑。
如果你需要机器可读的删除时间,必须显式提供合法的 datetime 值,否则等于没标。
立即学习“前端免费学习笔记(深入)”;
服务端生成 datetime 值比前端 JS 拼接更可靠
前端用 new Date().toISOString() 看似方便,但用户设备时区/系统时间不准会导致值偏差;服务端用统一时钟(如 Node.js 的 new Date().toISOString() 或 Python 的 datetime.now(timezone.utc).isoformat())才能保证一致性。
特别注意:
- 避免在模板中硬编码时间字符串(比如
datetime="2024-01-01"),这会让内容失去时效性 - 不要用
Date.parse()或moment().format()输出非 ISO 格式——哪怕看着像,浏览器也可能静默丢弃 - 如果内容由 CMS 或 Markdown 渲染生成,确认其输出管道是否自动转义或截断了冒号、
T、Z等关键字符
datetime 属性对渲染无影响,但会影响语义和可访问性
<del datetime="2024-03-15T10:22:33+08:00">旧价格</del> 和不带 datetime 的 <del> 在页面上看起来完全一样,CSS 无法基于该属性做样式区分,JavaScript 也得手动读取 element.dateTime 才能拿到值。
它的价值只体现在三处:
- 屏幕阅读器可能播报“已删除,时间为 2024 年 3 月 15 日上午 10 点 22 分”(取决于读屏软件支持程度)
- 搜索引擎结构化数据提取时可能收录该时间点
- 后续用微数据或 RDFa 做语义标注时,它是关键锚点
别指望靠它触发动画、日志上报或自动归档——那些都得自己写 JS 监听或后端配合。



















